Application.Current.Shutdown()不
-
18-09-2019 - |
题
标题的关于它。 WPF应用程序与一些WCF工具和IPC。我打电话Application.Current.Shutdown()
和应用程序高高兴兴地继续进行。我认为Shutdown
应该是不可阻挡的。
也许是因为它正在从后台线程叫什么名字?我需要做一些调度员摆弄?
解决方案
您得到一个异常,当我在除主之外的任何线程中调用Application.Current.Shutdown
,所以这里使用“调度员顺藤摸瓜”正常了。我会假设你
在任何情况下,这种编译和退出应用程序,所以如果调度位并不像你所拥有的,你可以吊索它:
ThreadStart ts = delegate()
{
Dispatcher.BeginInvoke((Action)delegate()
{
Application.Current.Shutdown();
});
};
Thread t = new Thread(ts);
t.Start();
其他提示
在我的经验所有线程必须要么被明确终止或以被标记为后台线程的应用程序关闭。
下面是在后台开球一个读出线程的示例:
_readThread = new Thread(new ThreadStart(ReadThread));
_readThread.Name = "Receiver";
_readThread.Priority = ThreadPriority.Highest;
_readThread.IsBackground = true;
_readThread.Start();
在IsBackground
属性是关键。如果没有被设置,线程不会当你调用关机的终止。
当我从Visual Studio中运行,我只经历Application.Current.Shutdown
不工作。在Visual Studio中(至少2010版我使用)Application.Current.Shutdown
不会做的事情。如果我单步通过它执行这一行,然后继续。如果我从Windows资源管理器运行的程序(如一个.exe)然后Application.Current.Shutdown
工作正常。
有可能是因为调试其他线程是活动的,但我无法解释它在此的说明。
不隶属于 StackOverflow