0

wpfウィンドウで複数のスレッドを使用しています。

私はthis.Close()ウィンドウを閉じるために使用しており、を使用して別のウィンドウを開くために使用していますnewWindow.Show().

コード:

// open new windows
newWindow newWindow = new newWindow();
                this.Close();
                newWindow.Show();

// close window
    private void OnClosed(object sender, EventArgs e)
            {
                // stop some events
                d.StopEvents();
        } 

に到達するまでに長い時間がかかりますStopEvents

私が使用する場合Environment.Exit(0); それはアプリケーションを閉じます、私はそれを望んでいません。

ありがとう。

4

2 に答える 2

3

あなたのスレッドは何をしていますか?一般的なパターンは、作業スレッドが定期的にフラグをチェックして、自分自身を閉じる必要があるかどうかを確認することです。別のトレッドがそれを中止するよりも、各スレッドがそれを行う方がはるかに安全です。

于 2012-10-04T16:25:32.907 に答える
1

並列拡張機能(TPL)の使用を検討することもできます。これにより、スレッド化がはるかに簡単になり、キャンセルなどの概念が組み込まれています。

.NET4キャンセルフレームワーク

于 2012-10-04T20:08:28.783 に答える