1

.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 ステートメント内でメソッドを実行すると想定しました。これにより、タスク プロセスから個別にタスクを制御できます。

4

0 に答える 0