Thread

Threadはスレッドを扱うクラス・・・。

Thread クラス (System.Threading)

別スレッドを生成して、重たい処理などを任せるときに使う・・・。
といっても、現在は非同期処理が充実してるのでこれを使うことはほとんど無いだろう・・・。

f:id:BG1:20170324131113p:plain

空で、

f:id:BG1:20170324131129p:plain

Systemを追加・・・。

MainClass.csで、

Threadオブジェクトthreadを生成・・・。
コンストラクタに生成したThreadStartオブジェクトを渡す・・・。
実はこれ、ThreadStartデリゲート・・・。
つまり、これのコンストラクタに、さらに今回スレッドに実行させるメソッドThreadFuncを渡すと、デリゲートとしてThreadに渡る・・・。
でこれをThreadが別スレッドで実行する・・・。

ThreadFuncは、

"ThreadFunc(1)"~"ThreadFunc(5)"まで出力・・・。

thread.Startでスレッド開始・・・。

Main側では、"Main(1)~Main(5)"まで出力・・・。

実行すると、

Main(1)
ThreadFunc(1)
ThreadFunc(2)
ThreadFunc(3)
ThreadFunc(4)
ThreadFunc(5)
Main(2)
Main(3)
Main(4)
Main(5)
続行するには何かキーを押してください . . .

1回目は、Main(1)とMain(2)の間にThreadFunc(1)~ThreadFunc(5)が割り込んでて、同時に実行してる感じに見える・・・。

2回目は、

ThreadFunc(1)
ThreadFunc(2)
ThreadFunc(3)
ThreadFunc(4)
ThreadFunc(5)
Main(1)
Main(2)
Main(3)
Main(4)
Main(5)
続行するには何かキーを押してください . . .

ThreadFuncが全部実行されてから、Mainが実行されてるように見えて、同時に実行してる感じには見えない・・・。

Sample/dotnet/Thread/Thread/src/Thread_ at master · bg1bgst333/Sample · GitHub