1

我有一个线程列表我想确保它们之间的执行顺序这是代码

for (int k = 0; k < RadioList.Count; k++)
{                                     
    for (int i = 0; i < filePaths.Count(); i++)
    {
        Thread t = new Thread(delegate()
        {                                  
            Thread_Encde_function(TempRadio.PublishPoint, filePaths[i], encodingtype);
        });
        t.Start();
        Thread.Sleep(1000);
    }
}

我想知道是否thread.join()可以完成这项工作。

4

1 回答 1

8

如果您的任务可以异步执行(乱序),那么线程是合适的。但是,如果您有许多任务要按顺序执行(严格来说是一个接一个),那么为什么要使用线程呢?您应该只在 for 循环中执行它们,因为它们不能并行化。使用Thread.Join在启动后立即等待线程可以解决问题,但是这样您必须等到任务完成才能开始下一个任务,从而有效地按顺序执行它们。

但是,如果您有一些任务可以同时执行,而其他部分必须按顺序执行,您可以查看C# Task Parallel Library,它使执行此类操作变得容易。

于 2013-05-04T11:28:25.317 回答