WPF에서 작업을 비동기적으로 지연하는 방법
작업에 지연을 생성하려고 할 때 Thread.Sleep을 사용하면 다음과 같은 문제가 발생할 수 있습니다. UI 스레드가 차단되고 있습니다. 이를 극복하려면 비동기식 수단을 사용해야 합니다.
DispatcherTimer를 활용하는 방법이 하나 있습니다.
<code class="csharp">tbkLabel.Text = "two seconds delay"; var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(2) }; timer.Start(); timer.Tick += (sender, args) => { timer.Stop(); var page = new Page2(); page.Show(); };</code>
또 다른 옵션은 Task.Delay를 사용하는 것입니다.
<code class="csharp">tbkLabel.Text = "two seconds delay"; Task.Delay(2000).ContinueWith(_ => { var page = new Page2(); page.Show(); });</code>
.NET 4.5 이상의 경우 async/await를 사용할 수 있습니다.
<code class="csharp">// Add async keyword to the method signature public async void TheEnclosingMethod() { tbkLabel.Text = "two seconds delay"; await Task.Delay(2000); var page = new Page2(); page.Show(); }</code>
비동기식 메서드를 구현하면 지연 기간 동안 UI 스레드가 응답 상태를 유지하므로 창 간 원활한 전환이 가능합니다.
위 내용은 UI 스레드를 차단하지 않고 WPF에서 작업을 비동기적으로 지연하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!