WPF로 작업할 때 진행하기 전에 지정된 기간 동안 작업을 지연해야 하는 경우가 많습니다. Thread.Sleep과 같은 스레드 차단 접근 방식을 사용하면 UI 스레드가 정지되므로 바람직하지 않은 동작이 발생할 수 있습니다. 대신, UI 응답성을 유지하면서 지연을 달성하기 위해 비동기식 방법을 사용해야 합니다.
한 가지 접근 방식은 DispatcherTimer를 사용하는 것입니다. 여기서 타이머는 특정 간격(예: 2초)으로 시작됩니다. 타이머가 똑딱거리면 지연이 완료되고 원하는 작업(예: 다음 창으로 이동)을 수행할 수 있습니다.
<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 패턴은 지연을 구현하는 우아한 방법을 제공합니다. 메서드를 비동기로 표시하면 wait 키워드를 사용하여 지연을 달성할 수 있습니다. 지연이 완료될 때까지 코드 실행이 일시 중지된 후 후속 작업이 실행됩니다.
<code class="csharp">// Ensure the method is marked as async public async void TheEnclosingMethod() { tbkLabel.Text = "two seconds delay"; await Task.Delay(2000); var page = new Page2(); page.Show(); }</code>
이러한 비동기식 접근 방식을 채택하면 UI 응답성을 유지하고 스레드를 방지하면서 WPF 애플리케이션에 지연을 효과적으로 도입할 수 있습니다. 차단 문제.
위 내용은 UI를 정지하지 않고 WPF에서 시간 지연을 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!