2019年10月19日土曜日

Task

■Task
並列にこなしたい処理のひとつひとつ
処理の手続きをまとめたもの

■async
 メソッド内でawaitをする場合メソッドの修飾子としてこれが必要
 これ自体は単なる装飾で、コンパイル結果は通常のメソッドと変わらないとのこと。
 (await という新キーワードが C# 4.0 以前のコードを破壊しないようにという意図)
 参考

■await
 asyncメソッド内で使用可能
 修飾された処理を別スレッドにて開始し、自身は一旦止まる?
 別スレッドの処理が終わったら停止前と同じスレッドにて処理を再開する。
   コレガワカラナイ
   WPFなんかでイベントハンドラを実装するとUIスレッドにて処理が行われるが、
   イベントハンドラ中でawaitするとUIスレッドが止まっちゃわない?
   (実際に動かして確認したらなんの問題もなかった。なんで?)

■とりあえず使うだけなら
 asyncメソッド内で重たい処理をTask.Run()でawait

■Task.Waitは使ってはいけないらしい
 デッドロックのリスクが高いとか
 awaitで待とう



Taskとasync/awaitについて分かりやすく解説されてるサイトがあったら教えて下さい…。

参考

0 件のコメント:

コメントを投稿