programing

WPF에서 작업을 수행하기 전에 지연을 설정하는 방법

lastcode 2023. 4. 12. 22:25
반응형

WPF에서 작업을 수행하기 전에 지연을 설정하는 방법

다음 창으로 이동하기 전에 아래 코드를 사용하여 2초 지연을 시도했습니다.그러나 스레드가 먼저 호출되고 텍스트 블록이 마이크로초 동안 표시되고 다음 페이지로 이동합니다.배차원이 그렇게 할 거라고 들었어요.

제 단편은 다음과 같습니다.

tbkLabel.Text = "two mins delay";
Thread.Sleep(2000);
Page2 _page2 = new Page2();
_page2.Show();

스레드에 대한 호출입니다.sleep이 UI 스레드를 차단하고 있습니다.비동기적으로 기다려야 합니다.

방법 1: 디스패처 타이머 사용

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();
    };

방법 2: 작업을 사용합니다.지연

tbkLabel.Text = "two seconds delay";

Task.Delay(2000).ContinueWith(_ => 
   { 
     var page = new Page2();
     page.Show();
   }
);

방법 3: [ ]NET 4.5 방식, 비동기/대기 사용

// we need to add the 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();
}

방법 4:NET 5.0 이상

    Task.WaitAll(new Task[] { Task.Delay(2000) });

이 솔루션에는 단점이 없습니다."DispatcherTimer" 및 "ContinueWith"가 불가능한 루프에서 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/15599884/how-to-put-delay-before-doing-an-operation-in-wpf

반응형