반응형
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
반응형
'programing' 카테고리의 다른 글
WPF DataGrid에 페이지 매기는? (0) | 2023.04.12 |
---|---|
Oracle SQL에서 단일 견적 처리 방법 (0) | 2023.04.12 |
C# - Excel 상호 운용성 향상 (0) | 2023.04.12 |
브랜치가 'origin/master'보다 3개 커밋 앞서 있습니다. (0) | 2023.04.12 |
SQL Server XML 열의 값을 쿼리하려면 어떻게 해야 합니까? (0) | 2023.04.12 |