Task.Run 不像 Thread.start 那样工作

我一直在开发一个应用程序,我需要以并行而不是阻塞的方式运行一些方法。首先我使用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

    }

}

你能解释一下有什么区别吗?为什么?我期望两个代码的行为相同,而且它们似乎不同。


萧十郎
浏览 254回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP