Application.Current.Shutdown()没有

Tho*_*mas 7 wpf application-shutdown

标题是关于它的.WPF应用程序,带有一些用于IPC的WCF内容.我打电话Application.Current.Shutdown(),应用程序继续愉快.我以为Shutdown应该是不可阻挡的.

也许是因为它是从后台线程调用的?我是否需要做一些调度员摆弄?

Moo*_*oll 12

当我Application.Current.Shutdown在主要线程之外的任何线程中调用时会出现异常,因此我假设您已经正确使用"调度程序".

在任何情况下,这都会编译并退出一个应用程序,因此如果调度程序位看起来不像您所拥有的那样,您可以将它放入:

ThreadStart ts = delegate()
    {
        Dispatcher.BeginInvoke((Action)delegate()
        {
            Application.Current.Shutdown();
        });
     };
 Thread t = new Thread(ts);
 t.Start();
Run Code Online (Sandbox Code Playgroud)


Gab*_*abe 10

根据我的经验,所有线程都必须显式终止或标记为后台线程才能关闭应用程序.

以下是在后台启动读取线程的示例:

_readThread = new Thread(new ThreadStart(ReadThread));
_readThread.Name = "Receiver";
_readThread.Priority = ThreadPriority.Highest;
_readThread.IsBackground = true;
_readThread.Start();
Run Code Online (Sandbox Code Playgroud)

IsBackground物业是关键.如果没有设置,则在调用Shutdown时线程不会终止.