C# Dispatcher.Invoke阻止应用程序关闭
我必须在我的MVVM Light WPF应用程序中添加一个C# Dispatcher.Invoke阻止应用程序关闭,c#,.net,multithreading,C#,.net,Multithreading,我必须在我的MVVM Light WPF应用程序中添加一个Dispatcher.Invoke(因为其中的代码位是从外部进程上的事件调用的)。但是现在,当我试图通过在chrome窗口中单击应用程序的十字来关闭应用程序时,它不会关闭。我已经有一个Dispose()方法在检测到应用程序关闭时被调用,所以我想我可能需要向它添加一些代码来处理这个调度程序 (注意,还有其他类似的问题,但我太幼稚,无法适应这里的问题。) 这个动作是什么?Invoke()是一个危险的方法,很可能导致死锁。在任何情况下,如果您试
Dispatcher.Invoke
(因为其中的代码位是从外部进程上的事件调用的)。但是现在,当我试图通过在chrome窗口中单击应用程序的十字来关闭应用程序时,它不会关闭。我已经有一个Dispose()
方法在检测到应用程序关闭时被调用,所以我想我可能需要向它添加一些代码来处理这个调度程序
(注意,还有其他类似的问题,但我太幼稚,无法适应这里的问题。)
这个动作是什么?Invoke()是一个危险的方法,很可能导致死锁。在任何情况下,如果您试图让工作线程停在窗口的事件处理程序中,Close事件都会导致崩溃。Invoke()方法无法完成,因为UI线程在等待线程完成时被卡住;事件处理程序无法完成,因为线程被卡住。一个叫死锁的致命拥抱。始终支持BeginInvoke(),使用Debug+Windows+线程来诊断死锁。@HansPassant,谢谢BeginInvoke Worked您忽略了大象。好吧,只要行得通。
System.Windows.Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(
() =>
{
.... my code ...
}));