Dav*_*ave 2 wpf dispatcher begininvoke
我对WPF比较陌生.我正在检查一些看起来像这样的代码:
private void button_Click(object sender, RoutedEventArgs e)
{
//Queue on dispatcher in the background so it doesn't make the UI slow
Dispatcher.BeginInvoke(new dMyDelegate(PerformOperation), DispatcherPriority.Background);
}
Run Code Online (Sandbox Code Playgroud)
从评论中,我猜测原始代码认为这对于使UI更具响应性是必要的,但是,我的理解是Dispatcher.BeginInvoke只是在UI线程上运行某些东西.由于buttn_Click已经在UI线程上,有什么意义呢?也许我误解了Dispatcher和BeginInvoke.在这种情况下,我假设Dispatcher是此方法所在的类所拥有的调度程序,即MainWindow.xaml.有人可以开导我吗?
谢谢
好吧,它要求"背景"优先级,所以它只会在处理任何更重要的事件时才会被执行...如果这是大屏幕刷新的一部分,它会有效地等到所有这一切都发生之前执行.即便如此,如果它将进行长时间运行(或进行任何潜在的阻塞调用),那么你是对的,它根本不应该在UI线程上运行.
| 归档时间: |
|
| 查看次数: |
1037 次 |
| 最近记录: |