Ao tentar introduzir um atraso antes de executar uma operação no WPF, é importante evitar usar Thread.Sleep, pois isso abordagem bloqueia o thread da UI e pode levar a interfaces de usuário que não respondem. Em vez disso, considere aproveitar técnicas de programação assíncrona.
Uma opção é empregar um DispatcherTimer. Este temporizador é executado no thread de UI e chama seu manipulador de eventos Tick após um intervalo especificado:
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(); };
Outra abordagem envolve o uso de Task.Delay:
tbkLabel.Text = "two seconds delay"; Task.Delay(2000).ContinueWith(_ => { var page = new Page2(); page.Show(); });
Aqui, o programa cria uma tarefa que é concluída após um atraso de 2 segundos e então invoca o delegado de continuação para mostrar a nova página.
Finalmente, para projetos direcionados ao .NET 4.5 ou superior, o padrão async/await fornece uma maneira concisa e conveniente de lidar atrasos:
public async void TheEnclosingMethod() { tbkLabel.Text = "two seconds delay"; await Task.Delay(2000); var page = new Page2(); page.Show(); }
Ao aproveitar técnicas assíncronas, os desenvolvedores podem introduzir atrasos nas operações do WPF sem comprometer a capacidade de resposta da UI.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3