Hongliang 様
ご指南有難う御座います。
取得できました。
ところが・・・
別スレッドで動いていると思っていたのですが、IDをとったところ
Nothingとなってしまいます。
パターンA
Private Async Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'Run(Func<Task>)
'Public Shared Function Run(function As Func(Of Task)) As Task
'↓Dim proc_inl As Func(Of Task)
Dim proc_inl =
Async Function()
Await Task.Delay(100) '0.5秒待つ
Debug.Print($"別TaskA:{Task.CurrentId}")
End Function
Await Task.Run(proc_inl)
End Sub
パターンC
Private Async Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
'Run<TResult>(Func<Task<TResult>>)
'Public Shared Function Run(Of TResult)(function As Func(Of Task(Of TResult))) As Task(Of TResult)
'↓Dim proc_inl As Func(Of Task(Of String))
Dim proc_inl =
Async Function()
Await Task.Delay(100) '0.5秒待つ
Debug.Print($"別TaskC:{Task.CurrentId}")
Return "終わりC"
End Function
Debug.Print(Await Task.Run(proc_inl))
End Sub
また、パターンBの場合は、別スレッドとなりますが、Await Task.Runが使えないようです。
Private Async Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
'Run<TResult>(Func<TResult>)
'Public Shared Function Run(Of TResult) (function As Func(Of TResult)) As Task(Of TResult)
'↓ Dim Tasks As Task(Of String)
Dim proc_inl = New Task(Of String)(
Function() As String
Task.Delay(100) '0.5秒待つ
Debug.Print($"別TaskB:{Task.CurrentId}")
Return "終わりB"
End Function)
proc_inl.Start()
Debug.Print(Await proc_inl) 'Resultは、内部的にAwaitを呼び出している
End Sub