我有一个可以移动文件的控制台应用程序。它最初将文件移动了一个。然后我开始探索多线程以便一次移动所有文件。我发现我必须在每个 foreach 循环之后调用 console.read() 才能保持任务运行。如果没有这个,应用程序将关闭。通过这种方法,应用程序即使完成后仍保持打开状态。有人对如何解决这个问题有任何建议吗?
foreach (string file in files)
{
Task.Factory.StartNew(() => { MoveFiles(file, str); });
}
Console.Read();
最佳答案
使用Paralell.Foreach
而不是foreach
。这是一个阻塞调用。
Parallel.ForEach(files, file =>
{
MoveFiles(file, str);
});
顺便说一句:这比一次启动 N 个任务(假设有 10K 个文件)然后等待完成所有任务(通过Task.WaitAll)
关于时间:2019-03-17 标签:c#.nettasks/threadingconsoleapplication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40812433/