Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dispatcher.Invoke阻止应用程序关闭_C#_.net_Multithreading - Fatal编程技术网

C# Dispatcher.Invoke阻止应用程序关闭

C# Dispatcher.Invoke阻止应用程序关闭,c#,.net,multithreading,C#,.net,Multithreading,我必须在我的MVVM Light WPF应用程序中添加一个Dispatcher.Invoke(因为其中的代码位是从外部进程上的事件调用的)。但是现在,当我试图通过在chrome窗口中单击应用程序的十字来关闭应用程序时,它不会关闭。我已经有一个Dispose()方法在检测到应用程序关闭时被调用,所以我想我可能需要向它添加一些代码来处理这个调度程序 (注意,还有其他类似的问题,但我太幼稚,无法适应这里的问题。) 这个动作是什么?Invoke()是一个危险的方法,很可能导致死锁。在任何情况下,如果您试

我必须在我的MVVM Light WPF应用程序中添加一个
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 ...
}));