1

我正在尝试对使用 .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 语句中的方法。这使我可以单独控制任务流程中的任务。

4

0 回答 0