jjzjj

asynchronous

全部标签

c# - Async/Await VS Task.Run : When to use ? 如何使用?

好吧,我希望我掌握了async/await的基础知识,但仍有一些问题在我脑海中挥之不去。但是现在我说的就是这个问题了。假设在这个简单的例子中staticvoidMain(string[]args){Method();Console.WriteLine("MainThread");Console.ReadLine();}publicasyncstaticvoidMethod(){awaitTask.Run(newAction(LongTask));Console.WriteLine("NewThread");}publicstaticvoidLongTask(){Thread.Sleep

c# - 如何使用 Visual Studio - 生成异步 WCF 调用?

我的OperationContract:publicListGetMessages(){Listmessages=newList();foreach(Messagemin_context.Messages.ToList()){messages.Add(newMessageDTO(){MessageID=m.MessageID,Content=m.Content,Date=m.Date,HasAttachments=m.HasAttachments,MailingListID=(int)m.MailingListID,SenderID=(int)m.SenderID,Subject=m.

c# - async/await 单元测试代码覆盖率

如何为异步/等待方法编写单元测试,我使用的是VisualStudio2013。假设我们有一个异步方法:publicasyncTaskDoSomethingAsync(){...await_service.DoInternalAsync();...}由于我使用的是最新版本的VisualStudio,它对异步方法单元测试有很好的支持:[TestMethod]publicasyncTaskDoSomthingAsyncTest(){...await_objectUnderTest.DoSomethingAsync();//howtoverifytheresult???hereiswhatId

c# - SSH.Net异步文件下载

我正在尝试使用SSH.NET从SFTP服务器异步下载文件。如果我同步执行它,它工作正常但是当我异步执行时,我得到空文件。这是我的代码:varport=22;stringhost="localhost";stringusername="user";stringpassword="password";stringlocalPath=@"C:\temp";using(varclient=newSftpClient(host,port,username,password)){client.Connect();varfiles=client.ListDirectory("");vartasks=

c# - 在 .Select lambda 中使用 async/await

我正在使用Asp.NetCoreIdentity并尝试简化一些将用户列表及其角色转换到ViewModel的代码。这段代码有效,但在试图简化它的过程中,我陷入了错误和好奇的疯狂漩涡中。这是我的工作代码:varallUsers=_userManager.Users.OrderBy(x=>x.FirstName);varusersViewModel=newList();foreach(varuserinallUsers){vartempVm=newUsersViewModel(){Id=user.Id,UserName=user.UserName,FirstName=user.FirstNa

c# - 异步方法和异步委托(delegate)

C#3.0简述说异步方法和异步委托(delegate)看起来很相似,但行为却大不相同.这是书中关于两者的说法。异步方法很少或从不阻塞任何线程。Begin方法可能不会立即返回给调用者。商定的协议(protocol),不支持C#语言。异步委托(delegate)可以阻止任何时间长度BeginInvoke立即返回给调用者。内置编译器支持。书上还说,异步方法的目的是让很多任务在很少的线程上运行;异步委托(delegate)的目的是与调用者并行执行任务。当我通过反射器查看System.IO.Stream类中的BeginRead()方法时,它使用委托(delegate)并调用BeginInvoke

c# - 使用 Async 和 Await 中断数据库调用(使用 Dapper)

我们从Dapper请求返回数千个对象并达到参数限制(2100),因此决定分块加载它们。我认为这是尝试AsyncAwait的好机会-这是我第一次尝试,所以可能会犯小学生错误!断点被击中,但整个事情就是没有返回。它没有抛出错误-一切似乎都在黑洞中进行!请帮忙!这是我原来的方法——它现在调用异步方法publicListGet(IEnumerableids){returnthis.GetMyObjectsAsync(ids).Result.ToList();}//Breakpointonthisfinalbracketnevergetshit我添加了这个方法来将id分成1000个block,然

c# - LINQ 代码中的异步 - 说明?

几乎每个SO关于此主题的回答都指出:LINQdoesn'tworkperfectlywithasync还有:Irecommendthatyounotthinkofthisas"usingasyncwithinLINQ"但在Stephen的书中有一个示例:Problem:Youhaveacollectionoftaskstoawait,andyouwanttodosomeprocessingoneachtaskafteritcompletes.However,youwanttodotheprocessingforeachoneassoonasitcompletes,notwaitingf

c# - Task.WhenAll() - 它会创建一个新线程吗?

根据MSDN:Createsataskthatwillcompletewhenallofthesuppliedtaskshavecompleted.当调用Task.WhenAll()时,它会创建一个任务,但这是否一定意味着它会创建一个新线程来执行该任务?例如,下面这个控制台应用程序中创建了多少个线程?classProgram{staticvoidMain(string[]args){RunAsync();Console.ReadKey();}publicstaticasyncTaskRunAsync(){Stopwatchsw=newStopwatch();sw.Start();Tas

c# - 返工 EventWaitHandle 以异步等待信号

我需要更改当前代码,以便在调用EventWaitHandle.WaitOne时不阻塞当前线程。问题是我正在等待系统范围的事件。我还没有找到任何合适的替代品。代码:EventWaitHandlehandle=newEventWaitHandle(false,EventResetMode.AutoReset,"Localevent",outscreenLoadedSignalMutexWasCreated);StartOtherApp();if(screenLoadedSignalMutexWasCreated){isOtherAppFullyLoaded=handle.WaitOne(4