首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Application.Current.Shutdown()不会

Application.Current.Shutdown()不会
EN

Stack Overflow用户
提问于 2009-12-08 22:38:14
回答 3查看 12K关注 0票数 7

标题就是这样的。WPF应用程序,带有一些用于IPC的WCF东西。我调用了Application.Current.Shutdown(),应用程序愉快地继续运行。我以为Shutdown应该是不可阻挡的。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-09 00:47:24

当我在主线程以外的任何线程中调用Application.Current.Shutdown时,你会得到一个异常,所以我假设你已经正确地使用了"dispatcher fiddling“。

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

代码语言:javascript
复制
ThreadStart ts = delegate()
    {
        Dispatcher.BeginInvoke((Action)delegate()
        {
            Application.Current.Shutdown();
        });
     };
 Thread t = new Thread(ts);
 t.Start();
票数 12
EN

Stack Overflow用户

发布于 2009-12-08 22:52:00

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

下面是一个在后台启动读取线程的示例:

代码语言:javascript
复制
_readThread = new Thread(new ThreadStart(ReadThread));
_readThread.Name = "Receiver";
_readThread.Priority = ThreadPriority.Highest;
_readThread.IsBackground = true;
_readThread.Start();

IsBackground属性是关键。如果没有设置,当你调用Shutdown时,线程不会终止。

票数 11
EN

Stack Overflow用户

发布于 2015-07-07 09:25:03

只有当我在Visual Studio中运行时,我才会发现Application.Current.Shutdown无法工作。在Visual Studio中(至少是我使用的2010版本),Application.Current.Shutdown什么也做不了。如果我单步执行,它将执行此行,然后继续。如果我从Windows Explorer运行该程序(作为.exe),那么Application.Current.Shutdown工作得很好。

这可能有一个解释,因为在调试期间其他线程是活动的,但我不能解释它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1867380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档