VB.Net 线程

标签 vb.net multithreading

我目前正在开发一个迭代文件夹中文件的流程;它用作数据迁移的一部分。文件的每次迭代大约需要 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/

相关文章:

vb.net - 如何检查给定的字符串是否是真实的单词?

windows - 确定事件窗口名称或 ID

asp.net - 如何打开 aspx 页面作为模态弹出窗口

Python 字典转换为 VB.net

python - Expect 无法生成两个以上的命令

javascript - 无法在 UpdatePannel 中获取 DropDownList 控件

python - 在 Python 中使用带线程的全局字典

c# - webClient.DownloadDataCompleted 事件

c# - 线程启动滞后于 UI WPF

Java - 线程不想启动