时间:2019-03-17 标签:c#.nettasks/threadingconsoleapplication

标签 c# .net multithreading console-application

我有一个可以移动文件的控制台应用程序。它最初将文件移动了一个。然后我开始探索多线程以便一次移动所有文件。我发现我必须在每个 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/

相关文章:

java - 代码的 “side-effects”到底是什么意思?

java - 使用锁和同步的组合会导致意外结果

.net - 使用多线程处理大量数据

c# - 两个碰撞的圆圈,无法将公式转换为代码

c# - 由于未加密的流量,PowerShell 远程命令失败

c# - 将数组发布到 Azure Function HTTP 触发器返回 500 状态代码

c# - 在单台计算机上进行套接字编程?

c# - GridView 文本框值插入另一个文本框中

c# - 如何删除 XDocument 中非根节点的 xmlns 属性?

asp.net - 更新绝对过期的缓存项