タイトルはそれについてです。IPC用のいくつかのWCFのものを含むWPFアプリ。私が電話Application.Current.Shutdown()
すると、アプリは楽しく続きます。Shutdown
止められないはずだと思った。
おそらく、バックグラウンドスレッドから呼び出されているためですか?コーディネーターをいじる必要がありますか?
タイトルはそれについてです。IPC用のいくつかのWCFのものを含むWPFアプリ。私が電話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
プロパティが鍵です。これが設定されていないと、Shutdown を呼び出したときにスレッドは終了しません。