c#.net tasks / threading console application

时间:2016-11-25 21:24:01

标签: c# .net multithreading console-application

我有一个移动文件的控制台应用程序。它最初将文件移动一个。然后我开始探索多线程以便一次移动所有文件。我发现我必须在每个foreach循环之后调用console.read()以保持任务运行。如果没有这个应用关闭。使用这种方法,即使完成,应用程序仍保持打开状态。 Doeas任何人都有关于如何解决这个问题的任何建议;

        foreach (string file in files)
        {

            Task.Factory.StartNew(() => { MoveFiles(file, str); });

        }

        Console.Read(); 

2 个答案:

答案 0 :(得分:4)

使用target/代替Paralell.Foreach。这是一个阻止调用。

foreach
顺便说一句:它比一次启动 N 任务(假设有10K文件)然后等待完成所有任务(通过 Task.WaitAll )< / p>

答案 1 :(得分:1)

StartNew()实际返回Task个对象。您可以将所有这些对象保存在列表中,而不是Console.Read();执行Task.WaitAll(tasks.ToArray());

最后一次通话将等待任务完成。完成后,您的程序将关闭。