我有一个Windows窗体应用程序,它将视频文件的路径列表加载到一个数组中,然后使用foreach (string[] file in fileList)
循环,将遍历每个文件并对视频文件进行一些分析,然后编写结果返回filelist数组。
麻烦的是,它处理每个视频文件的时间略少于实时,这是不明智的。我的目标是跨多个线程分割任务。我已经测试了5次打开应用程序并在单独的文件上运行处理。 CPU可以毫无问题地处理这个问题。
跨多个线程分割处理的最简单方法是什么?
编辑:我是多线程的新手,目前正在学习。我知道多线程有不同的方法,但我正在寻找我应该使用的方法来了解它。
我找到了这个例子,但是我不明白它是如何工作的,与我看过的其他例子相比,这看起来太简单了。 Best way to do a multithread foreach loop
答案 0 :(得分:1)
如果将结果添加到同一个集合中,PLINQ会让它更容易一些:
var results = fileList.AsParallel().Select(file => {
var bytes = File.ReadAllBytes(file);
var result = bytes.Length;
return result;
}).ToList();