7

タイトルはそれについてです。IPC用のいくつかのWCFのものを含むWPFアプリ。私が電話Application.Current.Shutdown()すると、アプリは楽しく続きます。Shutdown止められないはずだと思った。

おそらく、バックグラウンドスレッドから呼び出されているためですか?コーディネーターをいじる必要がありますか?

4

3 に答える 3

12

Application.Current.Shutdownメインスレッド以外のスレッドを呼び出すと例外が発生するので、すでに「ディスパッチャをいじる」を適切に使用していると思います。

いずれにせよ、これはアプリケーションをコンパイルして終了するので、ディスパッチャービットがあなたが持っているもののように見えない場合は、それをスリングすることができます:

ThreadStart ts = delegate()
    {
        Dispatcher.BeginInvoke((Action)delegate()
        {
            Application.Current.Shutdown();
        });
     };
 Thread t = new Thread(ts);
 t.Start();
于 2009-12-08T16:47:24.420 に答える
11

私の経験では、アプリケーションを閉じるには、すべてのスレッドを明示的に終了するか、バックグラウンド スレッドとしてマークする必要があります。

バックグラウンドで読み取りスレッドを開始する例を次に示します。

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

IsBackgroundプロパティが鍵です。これが設定されていないと、Shutdown を呼び出したときにスレッドは終了しません。

于 2009-12-08T14:51:59.917 に答える