Task.Start

既にやってるけど、Task.Startでタスクを開始するという場合もある。

Task.Start メソッド (System.Threading.Tasks) | Microsoft Docs

コンソールアプリでTask.Startはやってるけど、WinFormsでTask.Startした場合に、Taskの外と中で、現在のタスクスケジューラとスレッドIDがどうなってるか確認してみる。

button1を配置
button1を配置

button1を配置。
Form1.csは、

タスクの前後と中で、現在のタスクスケジューラとスレッドIDをデバッグ出力。

デバッグ実行だとこの状態なので
デバッグ実行だとこの状態なので

デバッグ実行だとこの状態なので、

右下のペインを大きく広げる
右下のペインを大きく広げる

右下のペインを大きく広げる。

出力タブにする
出力タブにする

出力タブにする。
Form1に戻って、button1を押すと、

TaskScheduler.Currentは常にThreadPool、ThreadIdはTaskの中だけ違う。
TaskScheduler.Currentは常にThreadPool、ThreadIdはTaskの中だけ違う。

TaskScheduler.Currentは常にThreadPool、ThreadIdはTaskの中だけ違う。
WinFormsでもTaskは基本ThreadPoolなので毎回違うThreadIdが振られる。

Sample/dotnet/Task/Start/src/Task_ at master · bg1bgst333/Sample · GitHub