質問

タイトルのそれについて。 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プロパティが鍵となります。それが設定されるものではないが、スレッドはあなたがシャットダウンを呼び出したときに終了しません。

私は唯一の私は、Visual Studioから実行しているときに動作していないApplication.Current.Shutdownを体験します。 Visual Studioの内で(私が使用している、少なくとも2010年版)Application.Current.Shutdownは事をしていません。私はそれを介してステップを選抜した場合、この行を実行し、その後続けています。私は、Windowsエクスプローラからファイル(.exeなど)のプログラムを実行すると、その後Application.Current.Shutdownは正常に動作します。

他のスレッドをデバッグ時に有効ですが、私はそれを説明することはできませんので、これについての説明は、おそらくあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top