gpt4 book ai didi

c# - 并行和异步方法

转载 作者:行者123 更新时间:2023-11-30 12:59:37 25 4
gpt4 key购买 nike

我有一个简单的问题 - 为什么异步方法不等待并行循环完成?

public async Task<List<object>> DoSomeAsync()
{
// some async actions with streams and web requests
// ...
ConcurrentQueue<object> queue = new ConcurrentQueue<object>();

Parallel.For(1, x, async i =>
{
// a little chunk of code
// ...
queue.Enqueue(new object());
// ...
// a little chunk of code again
}

return queue.ToList(); // debugger says that this statement is executed earlier than parallel loop.
}

您知道如何等待并行循环的执行吗?

最佳答案

只需在没有'async'的情况下使用它:这将是确保程序完成的最简单方法,仍然处于并行执行模式,然后再移动到下一行(换句话说,它阻止主 UI 等待工作进程的完成,它本身正在以并行模式运行一些东西):

   Parallel.For(1, x, (i) => 
{
// a little chunk of code
// ...
queue.Enqueue(new object());
// ...
// a little chunk of code again
});

此外,您还可以查看 Alexandra Rusina ( http://blogs.msdn.com/b/csharpfaq/archive/2010/06/01/parallel-programming-in-net-framework-4-getting-started.aspx ) 使用 Task.Factory.ContinueWhenAll() 给出的示例,该示例适用于您的问题(如果在 Parallel/异步模式)。研发,

关于c# - 并行和异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24467692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com