.net - 如何在任务中突破 Parallel.ForEach
问题描述
我正在运行 Parallel.ForEach 作为任务。我想在满足某个条件时摆脱它。考虑如下:
Dim opt As System.Threading.Tasks.ParallelOptions = New System.Threading.Tasks.ParallelOptions With {
.MaxDegreeOfParallelism = My.Settings.ssUserMaxThreads}
Dim ttask = Task.Factory.StartNew(Sub()
Parallel.ForEach(filesList, opt,
Sub(rom As String)
ProcessROM(rom, romDS, ClassHash)
totalCount += 1
Debug.WriteLine("TotalCount: " & totalCount)
If totalCount > LimitedNumber Then
Debug.WriteLine("Limited number exceeded")
'What here?
End If
con.Invoke(CType(Sub()
ReportProgress()
End Sub, Action))
Application.DoEvents()
End Sub
)
End Sub)
Do Until totalCount > LimitedNumber
Application.DoEvents()
Loop
如果> ,我如何尽早摆脱这个Parallel.ForEach
OR ?Task
totalCount
LimitedNumber
解决方案
您可以通过在 sub 中作为变量传递来使用 ParallelLoopState 类。Break 是一种对您的情况有用的方法。
Parallel.ForEach(filesList, opt, Sub(rom As String, state as ParallelLoopState)
ProcessROM(rom, romDS, ClassHash)
.........
.........
If totalCount > LimitedNumber Then
Debug.WriteLine("Limited number exceeded")
state.Break();
End If
...........
.........
有关更多详细信息,请参阅https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.parallelloopstate?view=netframework-4.8
推荐阅读
- python - talib 如何计算 RSI(相对强弱指数)?
- javascript - 将相同的按钮功能应用于不同的 jquery 对话框
- unity3d - Unity MRTK with HoloLens 2:如何在代码中检测手是否触摸了游戏对象?
- javascript - 如何将 ExpressJS 路由器传递到隔离虚拟机实例
- python - 如何让驱动程序导航到 selenium python 中的新页面
- javascript - TypeError:无法读取未定义的属性“参数”以更新类别
- flutter - 在 LicensePage 中隐藏我的颤振应用程序中的包
- discord.py - 使用 tatsu API 时对象没有属性
- react-native - React Native:[Branch] customMetadata 值必须是字符串
- python - 如果用户不采取行动功能被省略