「C Sharpの基礎 - マルチスレッド」の版間の差分

ナビゲーションに移動 検索に移動
文字列「</source>」を「</syntaxhighlight>」に置換
(文字列「<source lang」を「<syntaxhighlight lang」に置換)
(文字列「</source>」を「</syntaxhighlight>」に置換)
19行目: 19行目:
     return iRet;
     return iRet;
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


47行目: 47行目:
     return await taskAll.ConfigureAwait(false);
     return await taskAll.ConfigureAwait(false);
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


72行目: 72行目:
   
   
  var taskAll = Task.WhenAll(task1, task2).ContinueWith(task3);  // awaitは不要
  var taskAll = Task.WhenAll(task1, task2).ContinueWith(task3);  // awaitは不要
  </source>
  </syntaxhighlight>
<br>
<br>
  <syntaxhighlight lang="c#">
  <syntaxhighlight lang="c#">
96行目: 96行目:
   
   
  await task3.ConfigureAwait(false);
  await task3.ConfigureAwait(false);
  </source>
  </syntaxhighlight>
<br>
<br>
状況にもよるが、処理が膨大になると可読性が落ちるので、<br>
状況にもよるが、処理が膨大になると可読性が落ちるので、<br>
122行目: 122行目:
     return await Task.Delay(1000);
     return await Task.Delay(1000);
  }
  }
  </source>
  </syntaxhighlight>
<br>
<br>
対策として、以下のように記述するとデッドロックが回避できる。(戻るスレッドはどこでもよい場合)<br>
対策として、以下のように記述するとデッドロックが回避できる。(戻るスレッドはどこでもよい場合)<br>
136行目: 136行目:
     return await Task.Delay(1000).ConfigureAwait(false);
     return await Task.Delay(1000).ConfigureAwait(false);
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:C_Sharp]]
[[カテゴリ:C_Sharp]]

案内メニュー