草庐IT

Async-await

全部标签

c# - 使用 LINQ ForEach() 异步等待

我有以下正确使用异步/等待范式的代码。internalstaticasyncTaskAddReferencseData(ConfigurationDbContextcontext){foreach(varsinkNameinRequiredSinkTypeList){varsinkType=newSinkType(){Name=sinkName};context.SinkTypeCollection.Add(sinkType);awaitcontext.SaveChangesAsync().ConfigureAwait(false);}}如果我不使用foreach(),而是想使用LIN

c# - 针对特定异常的单元测试异步方法

有没有人举例说明如何在Windows8Metro应用程序中对异步方法进行单元测试,以确保它抛出所需的异常?给定一个带有异步方法的类publicstaticclassAsyncMathsStatic{privateconstintDELAY=500;publicstaticasyncTaskDivide(intA,intB){awaitTask.Delay(DELAY);if(B==0)thrownewDivideByZeroException();elsereturnA/B;}}我想使用新的Async.ExpectsException结构编写一个测试方法。我试过了:-[TestMeth

c# - 在viewmodel的构造函数中调用async方法加载数据有警告

我的View包含一个ListView,它显示来自互联网的一些数据,我创建了一个异步方法来加载数据并在我的View模型的构造函数中调用该方法。它有一个警告提示我现在使用await关键字。在构造函数中异步加载数据的任何其他解决方案? 最佳答案 有几个模式可以应用,所有这些都在StephanCleary的帖子中提到过。但是,让我提出一些不同的建议:由于您在WPF应用程序中,我会使用FrameworkElement.Loaded事件并将其绑定(bind)到ViewModel中的ICommand。有界命令将是AwaitableDelegate

c# - Progress<T> 没有报告功能

我有Windows窗体应用,这是我的代码:privateasyncvoidbtnGo_Click(objectsender,EventArgse){ProgresslabelVal=newProgress(a=>labelValue.Text=a);ProgressprogressPercentage=newProgress(b=>progressBar1.Value=b);//MakeActionAsync(labelVal,progressPercentage);awaitTask.Factory.StartNew(()=>MakeActionAsync(labelVal,prog

c# - 异步任务方法后触发回调

我需要在foreach时触发回调循环已完成对List中每个项目的搜索.privateasyncvoidstartSearchBtn_Click(objectsender,EventArgse){awaitSearch(files,selectTxcDirectory.SelectedPath,status);}privatestaticasyncTaskSearch(Listfiles,stringpath,LabelstatusText){foreach(stringfileinfiles){XmlDocumentxmlDoc=newXmlDocument();xmlDoc.Load

c# - 异步调用时 Azure KeyVault Active Directory AcquireTokenAsync 超时

我按照Microsoft的HelloKeyVault中的示例在我的ASP.NetMVCWeb应用程序上设置了AzureKeyvault。示例应用程序。默认情况下,AzureKeyVault(ActiveDirectory)AuthenticationResult的有效期为一小时。因此,一小时后,您必须获得一个新的身份验证token。KeyVault在获得我的第一个AuthenticationResulttoken后的第一个小时内按预期工作,但在1小时到期后,它无法获得新token。不幸的是,直到我的生产环境出现故障,我才意识到这一点,因为我在开发过程中从未测试过超过一个小时。无论如何,

c# - async 和 await 是否会提高 ASP.Net 应用程序的性能

我最近读了一篇关于c#-5和新的很好的异步编程特性的文章。我看到它在Windows应用程序中效果很好。我的问题是此功能是否可以提高ASP.Net性能?考虑这两个伪代码:publicTGetData(){vard=GetSomeData();returnd;}和publicasyncTGetData2(){vard=awaitGetSomeData();returnd;}在一个ASP.Net应用程序中,两个代码有区别吗?谢谢 最佳答案 首先,您的第二段代码将返回Task而不是T.最终的答案是“视情况而定”。如果您的页面需要访问多个数据

c# - 使用异步从数据库返回数据有什么好处?

我已经阅读了很多关于WebApi2的文章,我真的很喜欢它,但是我只是不明白为什么每个方法都使用async而不是标准方法。例子如下:[ResponseType(typeof(BookDto))]publicasyncTaskGetBook(intid){BookDtobook=awaitdb.Books.Include(b=>b.Author).Where(b=>b.BookId==id).Select(AsBookDto).FirstOrDefaultAsync();if(book==null){returnNotFound();}returnOk(book);}这里有什么好处?在服务

c# - 是否需要 relaycommand 的异步版本才能正确运行异步方法

我在View模型中定义了以下代码。我认为Func类型的SaveAsync正在转换为Action,因为RelayCommand采取的是Action而不是Func但我不清楚这意味着什么。1)RelayCommand是否需要换成异步版本(RelayCommandAsync)?2)关于异步,当前代码究竟在做什么?3)如果有什么我可以/应该改变以改进/纠正它怎么办?privateICommand_saveCommand;publicICommandSaveCommand{get{return_saveCommand??(_saveCommand=newRelayCommand(async()=>

c# - 等待 Task.Run 与等待

我在网上搜索过很多关于Task.Run和awaitasync的问题,但是有一个具体的使用场景我不太明白其中的区别。我相信场景非常简单。awaitTask.Run(()=>LongProcess());对比awaitLongProcess());LongProcess是一个异步方法,其中包含一些异步调用,例如使用awaitExecuteReaderAsync()调用db。问题:在这个场景下两者有什么区别吗?感谢任何帮助或输入,谢谢! 最佳答案 Task.Run可以将要处理的操作发布到不同的线程。这是唯一的区别。这可能有用-例如,如果L