以下のコードの場合UIが動かなくなる
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; }