草庐IT

async_wait

全部标签

c# - .Wait() 和 .GetAwaiter().GetResult() 有什么区别?

我的方法返回Task。我想等到它完成。我应该用什么.Wait()还是.GetAwaiter().GetResult()?它们有什么区别? 最佳答案 两者都是同步等待操作结果(您应该尽可能避免这些)。区别主要在于处理异常。使用Wait时,异常堆栈跟踪不会改变并代表异常发生时的实际堆栈,因此如果您有一段代码在线程池线程上运行,您将拥有像这样堆叠ThreadPoolThread.RunTaskYourCode.SomeWork另一方面,.GetAwaiter().GetResult()将重新处理堆栈跟踪以考虑所有异步上下文,忽略部分代码在

c# - 当异步方法未以 'Async' 结束时,如何在 Visual Studio 中收到警告?

每次创建不以“Async”结尾的异步方法时,如何让VisualStudio给我一个命名警告?这是异步方法的推荐约定,但我经常发现自己忘记添加该后缀,警告会很有用。 最佳答案 来自选项,转到文本编辑器→基本→代码风格→命名选择管理规范并添加新规范选择方法,勾选所有辅助功能选项,然后从修饰符中选择异步。将标题命名为异步方法并保存现在进入管理命名样式并添加新样式。添加Async作为后缀,命名为AsyncSuffix,然后保存现在按加号并创建新的命名。选择规范作为AsyncMethod,选择所需的Style作为AsyncPostfix,Se

c# - 为什么 "async void"单元测试无法识别?

asyncvoid单元测试无法在VisualStudio2012中运行:[TestClass]publicclassMyTestClass{[TestMethod]publicasyncvoidInvisibleMyTestMethod(){awaitTask.Delay(1000);Assert.IsTrue(true);}}如果我想进行异步单元测试,测试方法必须返回一个任务:[TestMethod]publicasyncTaskVisibleMyTestMethod(){awaitTask.Delay(1000);Assert.IsTrue(true);}为什么会这样?并不是说我绝

c# - Async PartialView 导致 "HttpServerUtility.Execute blocked..."异常

我有一个试图检索IEnumerable的部分View使用异步从数据库...方法publicstaticclassPostService{publicstaticintPostsPerPage=50;publicstaticasyncTask>GetRecentAsync(intpage=0){returnawaitentityFrameworkDbContext.Posts.ToListAsync();}}局部ViewpublicasyncTaskRecent(intpage=0){returnPartialView(awaitPostService.GetRecentAsync(pa

c# - Async await 关键字是否等同于 ContinueWith lambda?

有人可以确认我是否正确理解了Asyncawait关键字吗?(使用CTP版本3)到目前为止,我已经知道在方法调用之前插入await关键字基本上做了两件事,A。它创建一个立即返回,B。它创建一个“继续”,在异步方法完成时调用调用。在任何情况下,延续都是该方法代码块的剩余部分。所以我想知道的是,这两段代码在技术上是否等效,如果是,这是否基本上意味着await关键字与创建ContinueWithLambda相同(即:它基本上是一个编译器快捷方式)?如果不是,有什么区别?boolSuccess=awaitnewPOP3Connector("mail.server.com",txtUsername

c# - 使用 SqlCommand Async 方法处理大数据时性能糟糕

我在使用异步调用时遇到了主要的SQL性能问题。我创建了一个小案例来演示这个问题。我在位于我们LAN中的SQLServer2016上创建了一个数据库(因此不是localDB)。在那个数据库中,我有一个包含2列的WorkingCopy表:Id(nvarchar(255,PK))Value(nvarchar(max))DDLCREATETABLE[dbo].[Workingcopy]([Id][nvarchar](255)NOTNULL,[Value][nvarchar](max)NULL,CONSTRAINT[PK_Workingcopy]PRIMARYKEYCLUSTERED([Id]A

c# - 方法名中使用 "Async"后缀是否取决于是否使用 'async'修饰符?

在方法名称后缀“Async”的约定是什么?是否应该将“Async”后缀仅附加到使用async声明的方法?修饰符?publicasyncTaskConnectAsync()或者该方法只返回Task就足够了吗?或Task?publicTaskConnectAsync() 最佳答案 我认为即使从Microsoft文档来看,事实也是模棱两可的:InVisualStudio2012andthe.NETFramework4.5,anymethodthatisattributedwiththeasynckeyword(AsyncinVisualB

c# - 是否建议将 prevTask.Wait() 与 ContinueWith(来自任务库)一起使用?

所以最近有人告诉我,我将.ContinueWith用于任务的方式并不是使用它们的正确方式。我还没有在互联网上找到这方面的证据,所以我会问你们,看看答案是什么。这是我如何使用.ContinueWith的示例:publicTaskDoSomething(){returnTask.Factory.StartNew(()=>{Console.WriteLine("Step1");}).ContinueWith((prevTask)=>{Console.WriteLine("Step2");}).ContinueWith((prevTask)=>{Console.WriteLine("Step3

c# - 让 TransactionScope 与 async/await 一起工作

我正在尝试将async/await集成到我们的服务总线中。我根据这个例子实现了一个SingleThreadSynchronizationContexthttp://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspx.它工作正常,除了一件事:TransactionScope。我等待TransactionScope中的内容,它破坏了TransactionScope。TransactionScope似乎不太适合async/await,当然是因为它使用ThreadStaticAttribute在线程中存储内容。我得到这个异常(ex

c# - 等待 vs Task.Wait - 死锁?

我不太明白Task.Wait和await之间的区别。我在ASP.NETWebAPI服务中有类似于以下功能的东西:publicclassTestController:ApiController{publicstaticasyncTaskFoo(){awaitTask.Delay(1).ConfigureAwait(false);return"";}publicasyncstaticTaskBar(){returnawaitFoo();}publicasyncstaticTaskRos(){returnawaitBar();}//GETapi/testpublicIEnumerableGe