Я новичок в использовании задач. Я должен использовать Task.Factory.StartNew, поскольку целевым Framework является 4.0 .
Читая некоторый пример (в C#), я сделал этот код:
'Class is called from the main Form by:
'Dim Flag As New TaskAct
' Flag.Main(Hwnd)
Ниже код не генерирует ошибок, но не работает
Public Class TaskAct
Public Sub Main(Hwnd As String)
Dim TokenSource As CancellationTokenSource = New CancellationTokenSource
Dim Token As CancellationToken = TokenSource.Token
Try
Dim Tsk As Task = Task.Factory.StartNew(Sub()
Act(Hwnd) 'DOES SOME WORK
End Sub, Token)
TokenSource.Cancel() 'IN ALL THE WEB EXAMPLES THIS CODE IS **OUT** THE ABOVE SUB
Catch oce As OperationCanceledException
Debug.Print(oce.ToString)
Catch ex As Exception
Debug.Print(ex.ToString)
Finally
TokenSource.Dispose()
End Try
End Sub
Public Sub Act(hwnd As String)
'SOME CODE HERE
End Sub
End Class
Приведенный ниже код отлично работает , но может быть и неправильным, поскольку НЕ похожие примеры, более того, я не могу избавиться от TokenSource
Public Sub Main(Hwnd As String)
Dim TokenSource As CancellationTokenSource = New CancellationTokenSource
Dim Token As CancellationToken = TokenSource.Token
Try
Dim Tsk As Task = Task.Factory.StartNew(Sub()
Act(Hwnd)
TokenSource.Cancel() '**PUT INTO THE SUB WORKS!**
End Sub, Token)
Catch oce As OperationCanceledException
Debug.Print(oce.ToString)
Catch ex As Exception
Debug.Print(ex.ToString)
'Finally
' TokenSource.Dispose() 'I MUST COMMENT OR I GET ERROR AT NEXT CALLS
End Try
End Sub
Где ошибка ?? Ty.