草庐IT

SpringBoot中异步注解@Async介绍

全部标签

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

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

c# - 异步多播委托(delegate)

我最近一直在做一个广泛使用事件的项目。我需要做的一件事是在多播委托(delegate)上异步调用多个事件处理程序。我认为诀窍是对GetInvocationList中的每个项目调用BeginInvoke,但似乎那里不存在BeginInvoke。有没有办法做到这一点,或者我是否需要开始使用ThreadPool.QueueUserWorkItem并以这种方式推出我自己的解决方案? 最佳答案 GetInvocationList只返回一个Delegate类型的数组,它不知道适当的签名。但是,您可以将每个返回值强制转换为您的特定委托(deleg

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# - 异步任务方法后触发回调

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

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# - await 和 async 与 Task 并行库的区别

任务并行库和await、async有什么区别。引入await和async的必要性是什么?我看到TPL是C#4.0的一部分,await/async是C#5.0的一部分,但除此之外,基本区别是什么。引入这个新关键字的必要性是什么? 最佳答案 任务并行库是为parallelprogramming设计的-当您有很多工作要做并且想在多个线程之间拆分这些工作以便您可以使用所有CPU内核时。TPL最适合CPU密集型工作。Async和await适用于asynchronousprogramming-当你有一个操作(或多个操作)将在未来完成,而你想同时

c# - 以指定的时间间隔定期运行异步方法

我需要从C#网络应用程序向服务发布一些数据。数据本身是在用户使用应用程序时收集的(一种使用统计信息)。我不想在每个用户的请求期间向服务发送数据,我宁愿在应用程序中收集数据,然后在单独的线程中的单个请求中发送所有数据,这不满足用户请求(我的意思是用户不必等待服务处理请求)。为此,我需要一种JS的setInterval模拟-每X秒启动一次函数以将所有收集的数据刷新到服务。我发现Timer类提供了一些类似的(Elapsed事件)。但是,这只允许运行该方法一次,但这不是什么大问题。它的主要困难在于它需要签名voidMethodName(objecte,ElapsedEventArgsargs)