我正在使用c#winform 我有一个文件列表。有一个循环我需要将所有文件(5000个图像)上传到另一个服务器我怎么能用多线程实现它 另一点我怎么知道一个线程何时完成然后用于下一个等待上传的文件我是否需要使用监控类?
答案 0 :(得分:2)
您可以使用PLINQ:
IEnumerable<string> yourFiles = new[]{ "C:\\file.txt", "D:\\data.dat" };
int numberOfThreads = 10;
yourFiles.AsParallel().WithDegreeOfParallelism(numberOfThreads).ForAll(UploadFile);
private static void UploadFile(string file)
{
// do the actual uploading
}
答案 1 :(得分:2)
也许Parallel.For适合你。它很容易使用。您知道线程何时完成,因为您可以在另一个线程的方法末尾添加一些变量。类似于ManualResetEvent的东西。我认为Parallel.For是最难实现的。您也可以使用线程池。阅读微软网站。
Parallel.For(.NET 4)
For(Int32, Int32, Action<Int32>)
ThreadPool(.NET 2)
ThreadPool.QueueUserWorkItem(waitCallback)