草庐IT

Async-await

全部标签

c# - 是否可以等待一个事件而不是另一个异步方法?

在我的C#/XAMLmetro应用程序中,有一个按钮可以启动一个长时间运行的进程。因此,按照建议,我使用async/await来确保UI线程不会被阻塞:privateasyncvoidButton_Click_1(objectsender,RoutedEventArgse){awaitGetResults();}privateasyncTaskGetResults(){//Dolotofcomplexstuffthattakesalongtime//(e.g.contactsomewebservices)...}有时,GetResults中发生的事情需要额外的用户输入才能继续。为简单起

c# - 是否可以等待一个事件而不是另一个异步方法?

在我的C#/XAMLmetro应用程序中,有一个按钮可以启动一个长时间运行的进程。因此,按照建议,我使用async/await来确保UI线程不会被阻塞:privateasyncvoidButton_Click_1(objectsender,RoutedEventArgse){awaitGetResults();}privateasyncTaskGetResults(){//Dolotofcomplexstuffthattakesalongtime//(e.g.contactsomewebservices)...}有时,GetResults中发生的事情需要额外的用户输入才能继续。为简单起

c# - 在 Parallel.ForEach 中嵌套 await

这个问题在这里已经有了答案:Parallelforeachwithasynchronouslambda(10个答案)关闭9个月前。在Metro应用程序中,我需要执行多个WCF调用。需要进行大量调用,因此我需要在并行循环中进行调用。问题是并行循环在WCF调用全部完成之前退出。您将如何重构它以使其按预期工作?varids=newList(){"1","2","3","4","5","6","7","8","9","10"};varcustomers=newSystem.Collections.Concurrent.BlockingCollection();Parallel.ForEach(

c# - 在 Parallel.ForEach 中嵌套 await

这个问题在这里已经有了答案:Parallelforeachwithasynchronouslambda(10个答案)关闭9个月前。在Metro应用程序中,我需要执行多个WCF调用。需要进行大量调用,因此我需要在并行循环中进行调用。问题是并行循环在WCF调用全部完成之前退出。您将如何重构它以使其按预期工作?varids=newList(){"1","2","3","4","5","6","7","8","9","10"};varcustomers=newSystem.Collections.Concurrent.BlockingCollection();Parallel.ForEach(

c# - 异步/等待与 BackgroundWorker

这几天测试了.net4.5和c#5的新特性。我喜欢它的新异步/等待功能。早些时候我用过BackgroundWorker使用响应式UI在后台处理较长的进程。我的问题是:在拥有这些不错的新功能之后,我应该什么时候使用async/await以及什么时候使用BackgroundWorker?两者的常见场景是什么? 最佳答案 对于许多人来说,这可能是TL;DR,但是,我认为比较await与BackgroundWorker就像比较苹果和橘子,我对此的看法如下:BackgroundWorker旨在为您希望在后台执行的单个任务建模,在线程池线程上。

c# - 异步/等待与 BackgroundWorker

这几天测试了.net4.5和c#5的新特性。我喜欢它的新异步/等待功能。早些时候我用过BackgroundWorker使用响应式UI在后台处理较长的进程。我的问题是:在拥有这些不错的新功能之后,我应该什么时候使用async/await以及什么时候使用BackgroundWorker?两者的常见场景是什么? 最佳答案 对于许多人来说,这可能是TL;DR,但是,我认为比较await与BackgroundWorker就像比较苹果和橘子,我对此的看法如下:BackgroundWorker旨在为您希望在后台执行的单个任务建模,在线程池线程上。

c# - 异步编程和多线程有什么区别?

我认为它们基本上是同一件事——编写在处理器之间拆分任务的程序(在具有2个以上处理器的机器上)。然后我在读this,它说:Asyncmethodsareintendedtobenon-blockingoperations.Anawaitexpressioninanasyncmethoddoesn’tblockthecurrentthreadwhiletheawaitedtaskisrunning.Instead,theexpressionsignsuptherestofthemethodasacontinuationandreturnscontroltothecalleroftheasy

c# - 异步编程和多线程有什么区别?

我认为它们基本上是同一件事——编写在处理器之间拆分任务的程序(在具有2个以上处理器的机器上)。然后我在读this,它说:Asyncmethodsareintendedtobenon-blockingoperations.Anawaitexpressioninanasyncmethoddoesn’tblockthecurrentthreadwhiletheawaitedtaskisrunning.Instead,theexpressionsignsuptherestofthemethodasacontinuationandreturnscontroltothecalleroftheasy

c# - 在构造函数中调用异步方法?

总结:我想在构造函数中调用一个异步方法。这可能吗?详细信息:我有一个名为getwritings()的方法解析JSON数据。如果我调用getwritings()一切正常在async方法并放置await在它的左边。但是,当我创建LongListView在我的页面中尝试填充它我发现getWritings()出人意料地回归null和LongListView是空的。为了解决这个问题,我尝试更改getWritings()的返回类型至Task>然后通过getWritings().Result在构造函数中检索结果.但是,这样做最终会阻塞UI线程。publicpartialclassPage2:Phon

c# - 在构造函数中调用异步方法?

总结:我想在构造函数中调用一个异步方法。这可能吗?详细信息:我有一个名为getwritings()的方法解析JSON数据。如果我调用getwritings()一切正常在async方法并放置await在它的左边。但是,当我创建LongListView在我的页面中尝试填充它我发现getWritings()出人意料地回归null和LongListView是空的。为了解决这个问题,我尝试更改getWritings()的返回类型至Task>然后通过getWritings().Result在构造函数中检索结果.但是,这样做最终会阻塞UI线程。publicpartialclassPage2:Phon