处理多个线程中的文件

时间:2016-09-03 20:48:42

标签: c# multithreading

我有一个Windows窗体应用程序,它将视频文件的路径列表加载到一个数组中,然后使用foreach (string[] file in fileList)循环,将遍历每个文件并对视频文件进行一些分析,然后编写结果返回filelist数组。

麻烦的是,它处理每个视频文件的时间略少于实时,这是不明智的。我的目标是跨多个线程分割任务。我已经测试了5次打开应用程序并在单独的文件上运行处理。 CPU可以毫无问题地处理这个问题。

跨多个线程分割处理的最简单方法是什么?

编辑:我是多线程的新手,目前正在学习。我知道多线程有不同的方法,但我正在寻找我应该使用的方法来了解它。

我找到了这个例子,但是我不明白它是如何工作的,与我看过的其他例子相比,这看起来太简单了。 Best way to do a multithread foreach loop

1 个答案:

答案 0 :(得分:1)

如果将结果添加到同一个集合中,PLINQ会让它更容易一些:

var results = fileList.AsParallel().Select(file => {
    var bytes = File.ReadAllBytes(file);
    var result = bytes.Length;
    return result;
}).ToList();