繁体   English   中英

C#.net任务/线程控制台应用程序

[英]c# .net tasks/threading console application

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

        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要好

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

最后一个呼叫将等待任务完成。 完成后,您的程序将关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM