Dot-Net

不阻塞 UI 執行緒的同步等待

  • July 13, 2018

是否存在不會佔用 .NET WPF 中的 UI 執行緒的同步等待功能?就像是:

Sub OnClick(sender As Object, e As MouseEventArgs) Handles button1.Click
    Wait(2000) 
    'Ui still processes other events here
    MessageBox.Show("Is has been 2 seconds since you clicked the button!")
End Sub

您可以將 aDispatcherTimer用於此類事情。

**編輯:**這也可以…

private void Wait(double seconds)
{
   var frame = new DispatcherFrame();
   new Thread((ThreadStart)(() =>
       {
           Thread.Sleep(TimeSpan.FromSeconds(seconds));
           frame.Continue = false;
       })).Start();
   Dispatcher.PushFrame(frame);
}

Dispatcher.PushFrame文件。


從 .NET 4.5 開始,您可以使用async事件處理程序並Task.Delay獲得相同的行為。在這樣的處理程序返回期間簡單地讓 UI 更新Dispatcher.Yield

引用自:https://stackoverflow.com/questions/6117293