388得票11回答
运行多个异步任务并等待它们全部完成

我需要在控制台应用程序中运行多个异步任务,并等待它们全部完成后再进行进一步处理。 有很多文章,但我似乎越读越糊涂。我已经阅读并理解了 Task 库的基本原理,但显然我在某个地方丢失了一个链接。 我知道可以链式执行任务,使它们在另一个任务完成后开始(这基本上是我读过的所有文章的情况),但我希...

378得票5回答
同步等待异步操作,为什么在此使用Wait()会导致程序冻结

前言:我正在寻找一种解释,而不仅仅是一个解决方案。我已经知道了解决方案。 尽管花费了几天时间学习有关任务异步模式(TAP)、async和await的MSDN文章,但我仍对某些细节感到有些困惑。 我正在为Windows Store应用程序编写日志记录器,并且希望支持异步和同步记录。异步方法遵...

357得票6回答
捕获异步 void 方法抛出的异常

使用 Microsoft .NET 的异步 CTP,是否可以在调用方法中捕获由异步方法抛出的异常?public async void Foo() { var x = await DoSomethingAsync(); /* Handle the result, but som...

318得票3回答
在Parallel.ForEach中是否有与'continue'相等的功能?

我正在将一些代码转换为Parallel.ForEach,但在代码中使用了continue时出现了错误。在Parallel.ForEach中是否有类似的功能可以替代foreach循环中的continue? Parallel.ForEach(items, parallelOptions, ite...

301得票6回答
Task.Run()和Task.Factory.StartNew()有什么区别?

我有一个方法:private static void Method() { Console.WriteLine("Method() started"); for (var i = 0; i < 20; i++) { Console.WriteLi...

293得票10回答
使用并行foreach和异步lambda表达式

我想要并行处理一个集合,但是在实现过程中遇到了困难,因此希望能得到一些帮助。 问题出现在我想要在并行循环的 lambda 表达式中调用一个在 C# 中标记为 async 的方法时。例如: var bag = new ConcurrentBag<object>(); Parall...

282得票13回答
以同步方式调用异步方法

我有一个异步方法: public async Task<string> GenerateCodeAsync() { string code = await GenerateCodeService.GenerateCodeAsync(); return code; ...

281得票4回答
Parallel.ForEach与Task.Factory.StartNew的比较

以下代码片段有什么区别?它们都不会使用线程池线程吗? 例如,如果我想为集合中的每个项目调用一个函数,Parallel.ForEach<Item>(items, item => DoSomething(item)); vs foreach(var item in item...

270得票3回答
等待(await)和任务等待(Task.Wait) - 死锁?

我不太明白 Task.Wait 和 await 之间的区别。 我有类似于以下函数的ASP.NET WebAPI服务:public class TestController : ApiController { public static async Task<string>...

262得票9回答
HttpClient - 任务被取消?

当只有一个或两个任务时,它可以很好地工作,但是当我们列出多个任务时会抛出错误“任务被取消”。 List<Task> allTasks = new List<Task>(); allTasks.Add(....); allTasks.Add(....); Task.Wa...