草庐IT

async-ctp

全部标签

c# - 新的 C# 5.0 'async' 和 'await' 关键字是否使用多核?

添加到C#5.0语言的两个新关键字是async和await,两者协同工作以异步运行C#方法而不阻塞调用线程。我的问题是,这些方法是否真的利用了多核并并行运行,或者异步方法是否与调用方在同一个线程核心中运行? 最佳答案 TwonewkeywordsaddedtotheC#5.0languageareasyncandawait,bothofwhichworkhandinhandtorunaC#methodasynchronouslywithoutblockingthecallingthread.这理解了该功能的目的,但它给了async/

c# - 无法等待异步 lambda

考虑一下,Tasktask=newTask(async()=>{awaitTaskEx.Delay(1000);});task.Start();task.Wait();调用task.Wait()不会等待任务完成并立即执行下一行,但如果我将异步lambda表达式包装到方法调用中,代码将按预期工作。privatestaticasyncTaskAwaitableMethod(){awaitTaskEx.Delay(1000);}然后(根据svick的评论更新)awaitAwaitableMethod(); 最佳答案 在您的lambda示例

c# - 无法等待异步 lambda

考虑一下,Tasktask=newTask(async()=>{awaitTaskEx.Delay(1000);});task.Start();task.Wait();调用task.Wait()不会等待任务完成并立即执行下一行,但如果我将异步lambda表达式包装到方法调用中,代码将按预期工作。privatestaticasyncTaskAwaitableMethod(){awaitTaskEx.Delay(1000);}然后(根据svick的评论更新)awaitAwaitableMethod(); 最佳答案 在您的lambda示例

c# - 如何将 Async 与 ForEach 一起使用?

在使用ForEach时是否可以使用Async?下面是我正在尝试的代码:using(DataContextdb=newDataLayer.DataContext()){db.Groups.ToList().ForEach(i=>async{awaitGetAdminsFromGroup(i.Gid);});}我收到错误:Thename'Async'doesnotexistinthecurrentcontextusing语句所在的方法设置为async。 最佳答案 List.ForEach与async的配合不是特别好(出于同样的原因,LI

c# - 如何将 Async 与 ForEach 一起使用?

在使用ForEach时是否可以使用Async?下面是我正在尝试的代码:using(DataContextdb=newDataLayer.DataContext()){db.Groups.ToList().ForEach(i=>async{awaitGetAdminsFromGroup(i.Gid);});}我收到错误:Thename'Async'doesnotexistinthecurrentcontextusing语句所在的方法设置为async。 最佳答案 List.ForEach与async的配合不是特别好(出于同样的原因,LI

c# - 通过 ASP.NET Web API 有效地使用 async/await

我正在尝试在我的WebAPI项目中使用ASP.NET的async/await功能。我不太确定它是否会对我的WebAPI服务的性能产生任何影响。请在下面找到我的应用程序中的工作流程和示例代码。工作流程:UI应用程序→WebAPI端点(Controller)→WebAPI服务层中的调用方法→调用另一个外部Web服务。(这里我们有数据库交互等)Controller:publicasyncTaskGetCountries(){varallCountrys=awaitCountryDataService.ReturnAllCountries();if(allCountrys.Success){r

c# - 通过 ASP.NET Web API 有效地使用 async/await

我正在尝试在我的WebAPI项目中使用ASP.NET的async/await功能。我不太确定它是否会对我的WebAPI服务的性能产生任何影响。请在下面找到我的应用程序中的工作流程和示例代码。工作流程:UI应用程序→WebAPI端点(Controller)→WebAPI服务层中的调用方法→调用另一个外部Web服务。(这里我们有数据库交互等)Controller:publicasyncTaskGetCountries(){varallCountrys=awaitCountryDataService.ReturnAllCountries();if(allCountrys.Success){r

c# - 我应该避免使用 'async void' 事件处理程序吗?

我知道使用即发即弃asyncvoid方法来启动任务通常被认为是一个坏主意,因为没有待处理任务的跟踪并且处理异常很棘手可能会被抛入这样的方法中。我通常也应该避免使用asyncvoid事件处理程序吗?例如,privateasyncvoidForm_Load(objectsender,System.EventArgse){awaitTask.Delay(2000);//doasyncwork//...}我可以这样重写:TaskonFormLoadTask=null;//trackthetask,canimplementcancellationprivatevoidForm_Load(obje

c# - 我应该避免使用 'async void' 事件处理程序吗?

我知道使用即发即弃asyncvoid方法来启动任务通常被认为是一个坏主意,因为没有待处理任务的跟踪并且处理异常很棘手可能会被抛入这样的方法中。我通常也应该避免使用asyncvoid事件处理程序吗?例如,privateasyncvoidForm_Load(objectsender,System.EventArgse){awaitTask.Delay(2000);//doasyncwork//...}我可以这样重写:TaskonFormLoadTask=null;//trackthetask,canimplementcancellationprivatevoidForm_Load(obje

c# - 返回 void 和返回 Task 有什么区别?

在查看各种C#异步CTP示例时,我看到一些返回void的异步函数,以及其他返回非通用Task的人.我明白为什么要返回Task用于在异步操作完成时将数据返回给调用者,但我看到的函数的返回类型为Task从不返回任何数据。为什么不回void? 最佳答案 SLaks和Killercam的回答很好;我以为我只是添加了更多的上下文。您的第一个问题本质上是关于哪些方法可以标记为async.Amethodmarkedasasynccanreturnvoid,TaskorTask.Whatarethedifferencesbetweenthem?AT