我正在尝试对使用 .net 中的 taskfactory(并行任务)库创建的任务进行一些控制。我的调用者进程创建了两个任务,它们运行可从两个不同引用库访问的两种不同方法。
' CALLER PROCESS
Public ctsources As New CancellationTokenSource
Public stsources As New CancellationTokenSource
Public ct As CancellationToken = ctsources.Token
Public st As CancellationToken = stsources.token
Dim cjob As Task = Task.Factory.StartNew(AddressOf consumer.mainModule.main, st)
Dim pjob As Task = Task.Factory.StartNew(AddressOf producer.mainModule.Main, ct)
'BUTTON CLICK METHOD CANCELS TASKS
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button2.Click
Try
ctsources.Cancel()
stsources.Cancel()
Catch ex As Exception
End Try
End Sub
' THIS IS IN THE TASK PROCESS METHODS CONSUMER.MAINMODULE.MAIN
Public Shared stsources As New CancellationTokenSource
Public Shared st As CancellationToken = stsources.Token
If st.IsCancellationRequested Then
disconnTime = DateTime.Now.ToString
sendNetworkMessage("", disconnTime, "CONSUMER FORCIBLY DISCONNECTED")
closeConnections()
End If
另一个也一样。我发现任务仍在运行,在我单击按钮后,我认为任务会进行检查 IsCancellationRequested,然后在取消之前执行 if then 语句中的方法。这使我可以单独控制任务流程中的任务。