2011-09-17 5 views
1

TcpClientクラスとTcpListenerクラスを試して、何らかの理由でスレッドがいくつか実行されていて、フォームを閉じると、プロセスは終了せずにフォームが消えます。フォームを閉じるとアプリケーション処理が終了しないのですか? (C#)

VS IDEまたはタスクマネージャを使用して手動でプロセスを強制終了する必要があります。

プログラムを終了してもプロセスが終了しないときには、フォームの何も表示されません。どこでもブレークポイントが挿入され、コンソール出力でもスレッドが終了します。

誰でもここで何が起こっているのか分かりますか?

答えて

3

アプリケーションのメインスレッドは、作成したスレッドが終了するのを待機しています。あなたはtrueにあなたのスレッドのIsBackgroundプロパティを設定することができますので、終了からあなたのプロセスを停止しない:

MSDNから:

スレッドがバックグラウンドスレッドまたはフォアグラウンドスレッドのいずれかです。 バックグラウンドスレッドは、バックグラウンドスレッド がプロセスの終了を妨げることを除いて、フォアグランドスレッドと同じです。プロセスに属するすべての フォアグラウンドスレッドが終了すると、共通の ランタイムがプロセスを終了します。残りのバックグラウンドスレッド は停止され、完了しません。

+0

ありがとうございます! [chars] –

関連する問題