FiFiWiki2

FiFiWikiの第2版

ユーザ用ツール

サイト用ツール


c.sharp:非同期

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

c.sharp:非同期 [2018/05/05 09:18] (現在)
fifi 作成
ライン 1: ライン 1:
  
 +
 +以下のコードの場合UIが動かなくなる
 +```c
 +private void timer_MainSchedulerTimer_Tick(object sender, EventArgs e)
 +{
 +    this.timer_MainSchedulerTimer.Enabled = false;
 +
 +    /* 待つ */
 +    Thread.Sleep(10 * 1000);
 +    Debug.WriteLine("​waitt"​);​
 +
 +    this.timer_MainSchedulerTimer.Enabled = true;
 +}
 +
 +
 +以下のコードだと、UIは固まる。
 +asyncを付けても意味ない。
 +private async void timer_Tick(object sender, EventArgs e)
 +{
 +    this.timer_MainSchedulerTimer.Enabled = false;
 +
 +    /* 待つ */
 +    Debug.WriteLine("​Wait Start"​);​
 +    Thread.Sleep(10 * 1000);
 +    Debug.WriteLine("​Wait End");
 +
 +    this.timer_MainSchedulerTimer.Enabled = true;
 +}
 +
 +以下のコードだと、UIはかたまらない。
 +(awaitが使用される場合は,​ asyncを付けていないとコンパイルエラーが発生する)
 +private async void timer_Tick(object sender, EventArgs e)
 +{
 +    this.timer_MainSchedulerTimer.Enabled = false;
 +
 +    /* 待つ */
 +    await Task.Run(() =>
 +    {
 +        Debug.WriteLine("​Wait Start"​);​
 +        Thread.Sleep(10 * 1000);
 +        Debug.WriteLine("​Wait End");
 +    });
 +
 +    this.timer_MainSchedulerTimer.Enabled = true;
 +}
 +
 +
 +```
c.sharp/非同期.txt · 最終更新: 2018/05/05 09:18 by fifi