草庐IT

await-async

全部标签

c# - Haskell 相当于 C# 5 async/await

我刚刚阅读了有关使用await在C#5.0中处理异步函数的新方法。和async关键字。来自C#referenceonawait的示例:privateasyncTaskSumPageSizesAsync(){//TousetheHttpClienttypeindesktopapps,youmustincludeausingdirectiveandadda//referencefortheSystem.Net.Httpnamespace.HttpClientclient=newHttpClient();//...TaskgetContentsTask=client.GetByteArray

c# - 等价于 ContinueWith(delegate, CancellationToken) with await continuation

我有这种情况:privateTaskLongRunningTask=/*Something*/;privatevoidDoSomethingMore(TaskpreviousTask){}publicTaskIndependentlyCancelableSuccessorTask(CancellationTokencancellationToken){returnLongRunningTask.ContinueWith(DoSomethingMore,cancellationToken);}特别是,我感兴趣的行为在MSDN'spageaboutContinuationTasks中有详细

c# - CurrentCulture with async/await,自定义同步上下文

我有一个Web应用程序,我通过async/await使用了很多异步操作。一切正常,但当我创建自定义任务以并行运行多个任务时,我注意到,在此任务中,当前文化在等待后发生了变化。问题似乎是,线程池使用操作系统的文化,这与请求的文化不同,默认同步不会更新文化,即使在任务中更改当前线程的文化。所以我创建了一个自定义同步上下文:publicsealedclassCulturePreservingSynchronizationContext:SynchronizationContext{privateCultureInfoculture;privateCultureInfocultureUI;pu

c# - 在 TPL 数据流中使用 async/await 和 yield return

我正在尝试使用TPLDataflow实现数据处理管道.但是,我对数据流比较陌生,并不完全确定如何正确使用它来解决我要解决的问题。问题:我正在尝试遍历文件列表并处理每个文件以读取一些数据,然后进一步处理该数据。每个文件大概是700MB至1GB在尺寸方面。每个文件包含JSON数据。为了并行处理这些文件而不是运行内存,我正在尝试使用IEnumerable与yieldreturn然后进一步处理数据。获得文件列表后,我想同时处理最多4-5个文件。我的困惑来自:如何使用IEnumerable和yeildreturn与async/await和数据流。偶遇thisanswer通过svick,但仍然不确

c# - 如何: Use async methods with LINQ custom extension method

我有一个LINQ自定义扩展方法:publicstaticIEnumerableDistinctBy(thisIEnumerableitems,Funcproperty){returnitems.GroupBy(property).Select(x=>x.First());}我是这样使用它的:varspc=context.pcs.DistinctBy(w=>w.province).Select(w=>new{abc=w}).ToList();但问题是我不想要ToList()我想要这样的东西varspc=awaitcontext.pcs.DistinctBy(w=>w.province).

c# - 在 ASP.NET 事件处理程序中使用 async/await 是否安全?

当我遇到这个时,我正在用ASP.NET编写一些代码:protectedasyncvoidsomeButtonClickHandler(...){if(awaitblah)doSomething();elsedoSomethingElse();}询问后this问题我对async/await的工作原理有了更好的理解。但后来我突然想到,以上述方式使用async/await是否安全?我的意思是在调用awaitblah之后,调用者继续执行。这意味着它可能会在awaitblah完成之前将响应返回给客户端。这是正确的吗?如果是这种情况,doSomething()/doSomethingElse()会

c# - 如果我在未定义为任务的 IQueryable 上使用 await + ToListAsync() 是否正确

我正在使用带有EF-6的asp.netMVC-5,我不确定使用await+ToListAsync是否有效。例如,我有以下返回IQueryable的存储库方法:-publicIQueryablegetAllScanEmailTo(){returnt.TSets.Where(a=>a.Name.StartsWith("ScanEmail"));}我这样调用它:-varemailsTo=awaitrepository.getAllScanEmailTo().ToListAsync();一开始,我以为我会得到一个错误,因为我正在使用“等待”一个未定义为任务的方法,但上面的方法运行良好,所以有人

C# 5 async/await 线程机制感觉不对?

为什么调用线程要进入异步方法直到内部'await'?调用异步方法后立即生成一个线程不是更干净吗?这样您就可以确定异步方法会立即返回。您不必担心在异步方法的早期阶段没有做任何昂贵的事情。我倾向于知道一个方法是否会在“我的”线程上执行代码。不管堵不堵。该模型似乎开启了一系列介于两者之间的可能性。设计师比我聪明得多,所以我确信这是有充分理由的,我只是想好好想想。 最佳答案 Isn'titcleanertojustspawnathreadassoonasanasyncmethodiscalled.“异步”方法的全部意义在于避免生成新线程。您

c# - 使用 async/await 时如何更好地处理已处置的控件

考虑在UI线程上运行的这段代码:dividends=awaitDatabase.GetDividends();if(IsDisposed)return;//DoexpensiveUIworkhereearnings=awaitDatabase.GetEarnings();if(IsDisposed)return;//DoexpensiveUIworkhere//etc...注意每次我await我也查了IsDisposed.这是必要的,因为说我await长期运行Task.同时,用户在完成之前关闭表单。Task将完成并运行尝试访问已处理表单上的控件的延续。发生异常。有没有更好的方法来处理这

c# - 测试显示 "await"明显更慢,即使等待的对象已经完成

我想通过使用await/async来测试程序的开销。为了对此进行测试,我编写了以下测试类:publicclassEntity:INotifyCompletion{privateActioncontinuation;privateinti;publicvoidOnCompleted(Actioncontinuation){this.continuation=continuation;}publicEntityGetAwaiter(){returnthis;}publicEntityGetResult(){returnthis;}publicboolIsCompleted{get{retu