草庐IT

dispatch_async

全部标签

c# - 如何在 .NET 4.0 中使用 Microsoft.Bcl.Async 支持 TransactionScope 中的异步方法?

这个问题在这里已经有了答案:GetTransactionScopetoworkwithasync/await(4个答案)关闭2年前。我有一个类似的方法:publicasyncTaskSaveItemsAsync(IEnumerableitems){using(varts=newTransactionScope()){foreach(variteminitems){await_repository.SaveItemAsync(item);}await_repository.DoSomethingElse();ts.Complete();}}这当然有问题,因为TransactionScop

c# - 为什么 Enumerator.MoveNext 在与 using 和 async-await 一起使用时不能像我预期的那样工作?

我想通过一个List来枚举并调用异步方法。如果我这样做:publicasyncTaskNotWorking(){varlist=newList{1,2,3};using(varenumerator=list.GetEnumerator()){Trace.WriteLine(enumerator.MoveNext());Trace.WriteLine(enumerator.Current);awaitTask.Delay(100);}}结果是:True0但我希望它是:True1如果我删除using或awaitTask.Delay(100):publicvoidWorking1(){var

c# - 当我使用 "await" "async"方法时,它会变成同步的吗?

场景是这样的:staticasyncvoidMain(string[]args){awaitAnAsyncMethod();}privatestaticasynctaskAnAsyncMethod(){varx=awaitsomeAsyncMethod();vary=awaitsomeOtherAsyncMethod();returnx==y;}“someAsyncMethod”和“someOtherAsyncMethod”是因为我们使用await而同步运行,还是它们都按照执行顺序异步运行?更新鉴于下面的答案表明等待的异步方法将按顺序运行,如果我们只是要停止执行并等待这些方法的返回值,

c# - 在 Task.Run 中使用 async/await 在 WinForms 上访问 UI 控件

我在具有一个按钮和一个标签的WinForms应用程序中有以下代码:usingSystem;usingSystem.IO;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceWindowsFormsApplication1{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privateasyncvoidbutton1_Click(objectsender,EventArgse){awaitRun();}privateasyncTas

c# - 使用 async-await 可以给您带来任何性能优势吗?

每当我读到有关async-await的内容时,用例示例总是其中有一个您不想要的UI卡住。要么所有的编程书籍/教程都相同,要么UI阻塞是我作为开发人员应该了解的async-await的唯一情况。是否有任何示例可以说明如何使用async-await在算法中获得性能优势?让我们来回答任何经典的编程面试问题:在二叉树中找到最近的共同祖先给定a[0],a[1],...,a[n-1]表示一个基数的数字-10数,找到下一个使用相同数字的最大数找到两个排序数组的中位数(即合并它们时的中位数)给定一个数字数组1,2,...,n缺少一个数字,找到缺失的数字找出数组中最大的2个数有什么方法可以让那些使用as

c# "task method"也可以是 "async"方法吗?

我正在尝试掌握新的异步CTP内容,我可能在这里感到困惑......我可以有这个“任务方法”,没有问题:publicstaticTaskLongTaskAAsync(){returnTask.Run(()=>{return("AAA");});}但是如果我需要任务执行另一个任务,我可以将其标记为“async”并使用“await”吗?我试过这个:publicasyncstaticTaskLongTaskAAsync(){awaitTask.Delay(2000);returnTask.Run(()=>{return("AAA");});}但随后莫名其妙地得到了这个编译器错误:因为这是一个异

c# - 使用 Async 和 Await 转换普通的 Http Post Web 请求

我如何使用Async/Await模式转换我的传统HttpWebRequest“POST”调用,在此附上我当前的代码,任何人请帮助我使用WindowsPhone8的Async/Await模式转换此代码。publicvoidGetEnvironmentVariables(ActiongetResultCallback,ActiongetErrorCallback){CredentialsCallback=getResultCallback;ErrorCallback=getErrorCallback;varuri=newUri(BaseUri);varrequest=(HttpWebReq

c# - await/async 与线程有何不同?

我正在尝试熟悉c#的新await/async关键字,但我发现有几个方面我不太理解。让我们从竞争条件开始:Streams=......for(inti=0;i这会一直按预期工作吗(例如,写入文件12345.....而不是13254或其他东西)?第二件事是异步函数如果不包含await运算符则同步执行。而且,根据微软文档,异步函数总是在调用者线程中执行(与BeginInvoke相比)。这让我想到接下来的3个问题:异步函数在释放给调用函数之前执行了多少?asyncvoidMyAsyncFunction(){Operation1();Operation2();Operation3();....S

c# - 当我必须使用 await 时,为什么要使用 async?

我已经在这个问题上停留了一段时间,并没有真正找到任何有用的解释来解释为什么会这样。如果我有一个async方法,例如:publicasyncTaskMyMethod(){//Somelogicreturntrue;}publicasyncvoidMyMethod2(){varstatus=MyMethod();//Visualstudiogreenlinesthisandrecommendsusingawait}如果我在这里使用await,异步方法有什么意义呢?VS告诉我调用await不会使async无用吗?这不会破坏在不等待任务完成的情况下将任务卸载到线程的目的吗?

c# - async/await 关键字在 .net 4.0 中不可用

我想在C#4.0中使用async/await并且我已经安装了以下包:http://www.nuget.org/packages/Microsoft.Bcl.Async/问题是我没有可用的async/await关键字。我正在使用带有SP1的VS2010。谢谢。 最佳答案 您不会得到比JonSkeet's更好的答案.唯一支持的方法是将VS2012与Microsoft.Bcl.Async一起使用。VS2010很难使用async/await。有一个旧的AsyncCTP包(其中有许多错误从未被修复)充当VS2010的“附加组件”/“部分替换”