我目前正在开发一个迭代文件夹中文件的流程;它用作数据迁移的一部分。文件的每次迭代大约需要 8 秒;我需要运行大约 30000 次,所以 8 秒,这是一个问题。函数中的操作不能是多线程的,因为它会分解文档并且需要串行。
单线程代码执行此操作
For Each strFile In System.IO.Directory.GetFiles(txtFolderPathIN.Text)
CallFunction(strFile)
Next
将其转换为多线程的最佳方法是什么?没有给用户反馈;只需要启动该流程并尽快迭代它们即可。实现多线程的最简单方法是什么?
最佳答案
我会使用 ThreadPool 。像这样的事情:
ThreadPool.SetMaxThreads = 4
For Each strFile In System.IO.Directory.GetFiles(txtFolderPathIN.Text)
ThreadPool.QueueUserWorkItem(new WaitCallback(addressof CallFunction), strFile)
Next
您还可以使用自己的线程池系统,方法是拥有一个线程列表,并使用互斥体在所有子线程完成运行之前阻止主线程退出。
关于VB.Net 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2019911/