TaskFactory を使用してタスクを宣言していますが、深刻な疑問があります。
作成時に continueWith を宣言するタスクを作成していますが、後で開始される 2 番目のタスクにも割り当てていません。
宣言は次のようになります。
Dim taskConta = Tasks.Task(Of DataSet).Factory.StartNew(
Function() FunctionToLaunch(parameter), TokenCancel.Token, Tasks.TaskCreationOptions.LongRunning)
taskConta.ContinueWith(New Action(Sub() Throw New TimeoutException("Exception Error"), System.Threading.Tasks.TaskContinuationOptions.OnlyOnFaulted)
ご覧のように。このタスクは次のように宣言されています。
TaskContinuationOptions.OnlyOnFaulted
タスクが実行され、次のコード行は次のようになります。
taskConta.Wait()
質問は:
タスクが失敗して終了し、使用した場合.Wait()
。コードが実行を継続する前に、ContinueWith アクションが開始されますか? それとも、キューに入れられて後で開始されますか?
後で開始する場合、多かれ少なかれどのくらいの時間がかかりますか? これThrow Exception
により、スコープ外に起動することができます。
私は次のようなことができることを知っています:
taskConta.Wait()
If taskConta.Status <> Tasks.TaskStatus.RanToCompletion Then
Throw New TimeoutException("Message")
End If
TaskFactory continueWith キューがどのように機能するか知りたいですか。