回答編集履歴

1

補足

2016/04/26 13:43

投稿

KoichiSugiyama
KoichiSugiyama

スコア3041

test CHANGED
@@ -23,3 +23,9 @@
23
23
 
24
24
 
25
25
  もし、別の場所でTask.Run()している処理があるのであればその処理で発生する他のイベントでフラグを戻している処理がないか確認してみてください(あまり論理的な方法ではないですが、フラグを変化させている箇所にブレークポイントを貼りまくってどこでフラグを戻しているかデバッガで追うのも一つの手です)。
26
+
27
+
28
+
29
+ あとはflagの宣言にvolatileをつけて、コンパイラから最適化されないようにすることで、回避できるかもしれません。
30
+
31
+ while内部でflagが変化する処理がないため、flagのチェック処理がスキップされる場合があります。volatileをつけて宣言すると最適化の際にも常に新しいflagの値をチェックしてくれるようになります。