我想同时执行多项任务(远程共享上的磁盘IO)。我不想阻止UI。我想我需要创建一个执行以下操作的自定义类...
有更好的方法吗?
有没有可用的课程?
我应该使用BackgroundWorker类的池还是别的什么?
我是否必须在自定义类中实现BackgroundWorker类,以便创建多个线程?
我想创建最多8个线程来删除文件和文件夹。我需要查询堆栈中的项目数以更新UI。
我目前有代码使用单个BackgroundWorker线程删除文件和文件夹(这使得UI不会被锁定,但是我需要花费很长时间才能同时运行多个实用程序)。
谢谢, 利
答案 0 :(得分:1)
如果您使用的是.NET 4,则任务并行库看起来就像您需要的那样。 MSDN上的参考资料如下:http://msdn.microsoft.com/en-us/library/dd460717.aspx。
具体而言,http://msdn.microsoft.com/en-us/library/dd537608.aspx处的示例建议替换
foreach (var item in sourceCollection)
{
Process(item);
}
与
Parallel.ForEach(sourceCollection, item => Process(item));
请注意代码中的死锁;特别是测试,因为在Windows网络堆栈的深处有时会发生奇怪的事情。
答案 1 :(得分:0)
您可以使用BackgroundWorker池,但请注意,它设计用于简单的多线程场景。 我建议使用TPL或Threadpool来解决你的问题,但是如果你的代码已经在使用一个BackgroundWorker,你会更快,重写它而不是使用TPL。
也许这个讨论会帮助您做出决定:BackgroundWorker vs. BackgroundThread