草庐IT

Async-await

全部标签

c# - 在 try-finally block 中等待

我一直在玩弄VisualStudio14CTP2。此版本的C#vNext支持在finallyblock中使用await关键字。我想弄清楚这是如何实现的。我知道这是一个实现细节,在RTM发布之前可能会发生变化,但我仍然需要针对此功能进行思考。为了尝试理解底层编译器生成的代码,我创建了这个示例代码:privateasyncvoidbutton1_Click(objectsender,EventArgse){try{}finally{awaitMyFinallyTest();}}privateasyncTaskMyFinallyTest(){awaitTask.Delay(1000);}这是

c# - 等待或 Task.FromResult

我有一项服务可以说,publicinterfaceISomeService{TaskDoSomeExpensiveCheckAsync(stringparameter);}我有这个类来使用服务。它只需要做一些简单的空检查,然后返回服务响应。publicclassSomeServiceConsumer{privatereadonlyISomeService_serviceClient;publicSomeServiceConsumer(ISomeServiceserviceClient){_serviceClient=serviceClient;}publicasyncTaskDoSom

c# - 等待或 Task.FromResult

我有一项服务可以说,publicinterfaceISomeService{TaskDoSomeExpensiveCheckAsync(stringparameter);}我有这个类来使用服务。它只需要做一些简单的空检查,然后返回服务响应。publicclassSomeServiceConsumer{privatereadonlyISomeService_serviceClient;publicSomeServiceConsumer(ISomeServiceserviceClient){_serviceClient=serviceClient;}publicasyncTaskDoSom

c# - 异步/等待并打开 FileStream?

在尝试确定我是否正确使用Stream方法(例如ReadAsync和CopyToAsync)时,我遇到了以下问题:C#4.5filereadperformancesyncvsasync在这个问题中,我在接受的答案中阅读了以下内容:Mostnotably,your"async"testdoesnotuseasyncI/O;withfilestreams,youhavetoexplicitlyopenthemasasynchronousorelseyou'rejustdoingsynchronousoperationsonabackgroundthread.在他的异步IO代码中,他使用以下代

c# - 异步/等待并打开 FileStream?

在尝试确定我是否正确使用Stream方法(例如ReadAsync和CopyToAsync)时,我遇到了以下问题:C#4.5filereadperformancesyncvsasync在这个问题中,我在接受的答案中阅读了以下内容:Mostnotably,your"async"testdoesnotuseasyncI/O;withfilestreams,youhavetoexplicitlyopenthemasasynchronousorelseyou'rejustdoingsynchronousoperationsonabackgroundthread.在他的异步IO代码中,他使用以下代

c# - 重温 Task.ConfigureAwait(continueOnCapturedContext : false)

阅读时间太长。使用Task.ConfigureAwait(continueOnCapturedContext:false)可能会引入冗余线程切换。我正在寻找一个一致的解决方案。长版。ConfigureAwait(false)背后的主要设计目标是减少冗余SynchronizationContext.Postawait的持续回调,在可能的情况。这通常意味着更少的线程切换和更少的UI线程工作。然而,它并不总是如何工作的。例如,有一个3rd方库实现了SomeAsyncApi应用程序接口(interface)。请注意ConfigureAwait(false)由于某种原因,在这个库中的任何地方都没

c# - 重温 Task.ConfigureAwait(continueOnCapturedContext : false)

阅读时间太长。使用Task.ConfigureAwait(continueOnCapturedContext:false)可能会引入冗余线程切换。我正在寻找一个一致的解决方案。长版。ConfigureAwait(false)背后的主要设计目标是减少冗余SynchronizationContext.Postawait的持续回调,在可能的情况。这通常意味着更少的线程切换和更少的UI线程工作。然而,它并不总是如何工作的。例如,有一个3rd方库实现了SomeAsyncApi应用程序接口(interface)。请注意ConfigureAwait(false)由于某种原因,在这个库中的任何地方都没

c# - Oracle managed driver 能否正确使用 async/await?

我正在尝试使用async/await.NET功能进行Oracle查询。结果集相当大,大约需要5-10秒才能返回。Window_Loaded挂起UI线程,本质上我想使用async/wait在后台执行查询,然后用结果更新数据View。那么这是Oracle驱动程序问题还是代码错误?例如。这里的某些事情是同步完成的而不是异步完成的吗?我正在使用最新的Oracle.ManagedDataAccess我可以从Oracle的网站上获得。asyncTaskAccessOracleAsync(){DataTabledt;using(OracleConnectionconn=newOracleConnec

c# - Oracle managed driver 能否正确使用 async/await?

我正在尝试使用async/await.NET功能进行Oracle查询。结果集相当大,大约需要5-10秒才能返回。Window_Loaded挂起UI线程,本质上我想使用async/wait在后台执行查询,然后用结果更新数据View。那么这是Oracle驱动程序问题还是代码错误?例如。这里的某些事情是同步完成的而不是异步完成的吗?我正在使用最新的Oracle.ManagedDataAccess我可以从Oracle的网站上获得。asyncTaskAccessOracleAsync(){DataTabledt;using(OracleConnectionconn=newOracleConnec

c# - VS 2010 是否允许我在 C# 中使用新的 async 和 await 关键字?

当新的async和await功能上线时,我能否在VisualStudio2010中使用它们,还是需要安装VisualStudio?我要问的是:Microsoft会保持VS2010和VS11之间的语言功能对等吗?CTP是一个预览版,无论是否可靠,我们的客户不希望我们使用被认为不完整或未经测试的技术-因此尽管有许可,我还是不能使用它。我的雇主不购买VS11,所以我需要知道我是否在用async和await浪费时间编写代码。 最佳答案 现在,AsyncCTP允许您在VisualStudio2010中使用新的awaits和async语法。语言