我一直在开发一个应用程序,我需要以并行而不是阻塞的方式运行一些方法。首先我使用Task.Run,但在调试模式下,我看到操作阻塞并等待结果。我不想要这个,我想要在foreach 循环中调用的所有方法异步运行。
public async void f()
{
foreach (var item in childrenANDparents)
{
await Task.Run(() => SendUpdatedSiteInfo(item.Host,site_fr));
// foreach loop does not work until the task return and continues
}
}
所以我将 task.run 更改为 thread.start并且效果很好!
public async void f()
{
foreach (var item in childrenANDparents)
{
Thread t = new Thread(() => SendUpdatedSiteInfo(item.Host, site_fr));
t.Start();
// foreach loop works regardless of the method, in debug mode it shows me
// they are working in parallel
}
}
你能解释一下有什么区别吗?为什么?我期望两个代码的行为相同,而且它们似乎不同。
相关分类