Hou*_*han 0 vb.net multithreading
我有许多线程需要运行(大约160)创建文件,然后将它们复制到不同的地方:
'Files is basically a list of strings
'which is passed to a function that creates a file from a number of database fields
'when thats done it copies it to a number of places
For Each x In Files
Dim Evaluator = New Thread(Sub() API.Files.Create.Standard(x))
Evaluator.Start()
Next
Run Code Online (Sandbox Code Playgroud)
我想要它做的是触发160个左右的线程(带有许可者x),然后等待所有线程完成,然后继续执行程序的其余部分.
如果您正在使用Framework 4.0(对于3.5 Jon Skeet有解决方案@ 我可以在.Net 3.5项目中使用任务并行库吗?).您可以使用TPL(任务处理库)而不是使用Thread.它是Threads的包装器.简而言之,创建任务并且它具有静态方法Task.WailAll,它允许预期的功能.
Dim tasks = New Task(160) {}
For i As var = 0 To 160
Dim x = i
tasks(i) = Task.Factory.StartNew(Function() New CreateFileClass(x).[Do]())
Next
Task.WaitAll(tasks)
Run Code Online (Sandbox Code Playgroud)
我使用了任务并行库中的代码- 知道所有任务何时完成并使用在线C#到VB.Net转换器生成上面的代码.我希望它有所帮助.
| 归档时间: |
|
| 查看次数: |
4685 次 |
| 最近记录: |