"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > UI 스레드를 차단하지 않고 WPF 작업에 지연을 도입하는 방법은 무엇입니까?

UI 스레드를 차단하지 않고 WPF 작업에 지연을 도입하는 방법은 무엇입니까?

2024년 11월 20일에 게시됨
검색:338

How to Introduce Delays in WPF Operations Without Blocking the UI Thread?

대체 접근 방식으로 WPF 작업에서 지연 달성

WPF에서 작업을 실행하기 전에 지연을 도입하려고 시도하는 경우 Thread.Sleep을 사용하지 않는 것이 중요합니다. 접근 방식은 UI 스레드를 차단하고 사용자 인터페이스가 응답하지 않을 수 있습니다. 대신 비동기 프로그래밍 기술 활용을 고려해 보세요.

DispatcherTimer 접근 방식

한 가지 옵션은 DispatcherTimer를 사용하는 것입니다. 이 타이머는 UI 스레드에서 실행되며 지정된 간격 후에 해당 Tick 이벤트 핸들러를 호출합니다.

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

Task.Delay 접근 방식

Task.Delay를 사용하는 또 다른 접근 방식은 다음과 같습니다.

tbkLabel.Text = "two seconds delay";

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

여기서 프로그램은 2초 지연 후 완료되는 작업을 생성한 다음 연속 대리자를 호출하여 새 페이지를 표시합니다.

Async/Await 접근 방식(.NET용) 4.5 이상)

마지막으로 .NET 4.5 이상을 대상으로 하는 프로젝트의 경우 async/await 패턴은 간결하고 편리한 지연을 처리하는 방법:

public async void TheEnclosingMethod()
{
    tbkLabel.Text = "two seconds delay";

    await Task.Delay(2000);
    var page = new Page2();
    page.Show();
}

비동기 기술을 활용하면 개발자는 UI 응답성을 저하시키지 않으면서 WPF 작업에 지연을 도입할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3