回答編集履歴

2

表現をわかりやすく変更

2020/08/24 10:54

投稿

GlassGrass
GlassGrass

スコア52

test CHANGED
@@ -150,7 +150,7 @@
150
150
 
151
151
  上記の例でも、`await`以降の処理がスレッド4に移されていることがわかります。
152
152
 
153
- - 呼び出し元のスレッドが同期コンテキスト(≒メッセージループ)を持っており、かつ`await`時ConfigureAwait設定が`true`の場合、呼び出し元スレッドで実行します。例えばWin32であればメッセージキューに`await`以降の処理を積み直すということをします。
153
+ - 呼び出し元のスレッドが同期コンテキスト(≒メッセージループ)を持っており、かつ`await`時に`ConfigureAwait(false)`を**設定していない**場合、呼び出し元スレッドで実行します。例えばWin32であればメッセージキューに`await`以降の処理を積み直すということをします。
154
154
 
155
155
  この場合、例のように`.Wait()`すると、メッセージループをブロックしたまま後続メッセージを待機するという処理になってしまい、結果デッドロックを生じます。
156
156
 

1

表記ゆれの校正

2020/08/24 10:54

投稿

GlassGrass
GlassGrass

スコア52

test CHANGED
@@ -142,7 +142,7 @@
142
142
 
143
143
 
144
144
 
145
- さて、`await`以降の処理がFuture化され他所のスレッドで実行されると言いましたが、ここで使われるスレッドは実は条件次第で異なります。
145
+ さて、`await`以降の処理がFuture化されスレッドで実行されると言いましたが、ここで使われるスレッドは実は条件次第で異なります。
146
146
 
147
147
 
148
148