.net の taskfactory (並列タスク) ライブラリを使用して作成しているタスクを制御しようとしています。私の呼び出し元プロセスは、2 つの異なる参照ライブラリからアクセスできる 2 つの異なるメソッドを実行する 2 つのタスクを作成します。
' 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 ステートメント内でメソッドを実行すると想定しました。これにより、タスク プロセスから個別にタスクを制御できます。