Application.Current.Shutdown() doesn't

可紊 提交于 2019-11-29 14:29:00

问题


Title's about it. WPF app with some WCF stuff for IPC. I call Application.Current.Shutdown() and the app continues on happily. I thought Shutdown was supposed to be unstoppable.

Perhaps because it's being called from a background thread? Do I need to do some dispatcher fiddling?


回答1:


You get an exception when I call Application.Current.Shutdown in any thread other than the main one, so I'd assume you where using "dispatcher fiddling" properly already.

In any case, this compiles and quits an application, so if the dispatcher bit doesn't look like what you have you could sling it in:

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



回答2:


In my experience all threads have to either be terminated explicitly or be marked as background threads in order for the application to close.

Here is an example of kicking off a read thread in the background:

_readThread = new Thread(new ThreadStart(ReadThread));
_readThread.Name = "Receiver";
_readThread.Priority = ThreadPriority.Highest;
_readThread.IsBackground = true;
_readThread.Start();

The IsBackground property is the key. Without that being set, the thread won't terminate on when you call Shutdown.




回答3:


I only experience Application.Current.Shutdown not working when I'm running from Visual Studio. Within Visual Studio (at least the 2010 version I'm using) Application.Current.Shutdown doesn't do a thing. If I single step through it executes this line and then continues. If I run the program (as an .exe) from Windows Explorer then Application.Current.Shutdown works fine.

There is probably an explanation for this since during debug other threads are active, but I can't explain it.



来源:https://stackoverflow.com/questions/1867380/application-current-shutdown-doesnt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!