«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как ввести задержки в операциях WPF, не блокируя поток пользовательского интерфейса?

Как ввести задержки в операциях WPF, не блокируя поток пользовательского интерфейса?

Опубликовано 20 ноября 2024 г.
Просматривать:732

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

Достижение задержек в операциях WPF с помощью альтернативных подходов

При попытке ввести задержку перед выполнением операции в WPF важно избегать использования Thread.Sleep, поскольку это подход блокирует поток пользовательского интерфейса и может привести к зависанию пользовательских интерфейсов. Вместо этого рассмотрите возможность использования методов асинхронного программирования.

Подход DispatcherTimer

Один из вариантов — использовать DispatcherTimer. Этот таймер запускается в потоке пользовательского интерфейса и вызывает обработчик событий 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 Approach

Другой подход предполагает использование Task.Delay:

tbkLabel.Text = "two seconds delay";

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

Здесь программа создает задачу, которая завершается с двухсекундной задержкой, а затем вызывает делегат продолжения для отображения новой страницы.

Подход 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();
}

Используя асинхронные методы, разработчики могут вносить задержки в операции WPF без ущерба для скорости реагирования пользовательского интерфейса.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3