web-dev-qa-db-ja.com

スレッドは、未処理の例外なしでコード0(0x0)で終了しました

C#アプリケーションのデバッグ中に、次の文が大量に発生していることに気付きました。

スレッド-コード0(0x0)で終了しました。

アプリケーションは動作し続け、例外はキャッチ/アンハンドドされません。

アプリケーションはWindows 7 64ビットで実行されており、x86プラットフォームでデバッグされています。

78
Gionata

これは単なるデバッグメッセージです。出力ウィンドウを右クリックしてThread Exit Messagesのチェックを外すと、スイッチを切ることができます。

http://msdn.Microsoft.com/en-us/library/bs4c1wda.aspx

アプリケーションからプログラムを出力することに加えて、Outputウィンドウには以下に関する情報を表示できます。

  • デバッガーがロードまたはアンロードしたモジュール。

  • スローされる例外。

  • 終了するプロセス。

  • 終了するスレッド

108
BlueM

まあ、アプリケーションは、並行して実行されている多くのスレッドを持っているかもしれません。いくつかはあなた、コーダーによって実行され、いくつかはフレームワーククラスによって実行されます(特にGUI環境にいる場合)。

スレッドがタスクを完了すると、スレッドは終了し、存在しなくなります。つまり、これには何も心配することはなく、気にする必要はありません。

8
Kek

BluMの受け入れられた答えを完成させるために、ここでそれを無効にすることができます:

ツール>オプション>デバッグ>一般出力設定>スレッド終了メッセージ:オフ

5
alphanoch

アプリケーションがスレッドを直接または間接的に使用している場合(つまり、サードパーティのライブラリのように舞台裏で)、スレッドが終了した後に終了することは絶対に一般的です... ...不要な場合、このメッセージを表示しないようにデバッガを設定できます...

上記が役に立たない場合、私はあなたが正確にどのような問題に直面しているかわからないので、詳細を提供してください...

4
Yahia

Linqクエリを実行すると、余分なスレッドが生成される場合があります。イミディエイトウィンドウでLinqクエリコレクションを使用するコードを実行しようとすると、十分なスレッドがデバッガーで使用できないため、実行が拒否されることがよくあります。

他の人が言ったように、スレッドが終了したときに終了することは完全に正常です。

1
tonyb

フレームワークは、作成した各ウィンドウをサポートするスレッドを作成します。たとえば、Formを作成して.Show()するときなどです。ウィンドウが閉じると、スレッドは終了します(つまり、終了します)。

これは正常な動作です。ただし、アプリケーションがスレッドを作成しており、これらのスレッドに対応するスレッド終了メッセージが多数ある場合(アプリで個別の名前を付けることにより、スレッドの名前で判断できる場合があります)、おそらくこれは問題を示していますプログラムロジックエラーが原因で、アプリがスレッドを作成すべきではありません。

元のポスターに、サーバーのクラッシュの問題に関して発見したことを知らせてもらうと、興味深いフォローアップになります。私はこれとは何の関係もないだろうと感じています...しかし、投稿された情報から伝えるのは難しいです。

1
JoGusto