117

デバッグ中に出力ウィンドウに表示されるスレッド終了コードとは正確には何ですか? それは私にどんな情報を与えますか?それはどういうわけか便利ですか、それとも私を悩ませてはならない単なる内部的なものですか?

The thread 0x552c has exited with code 259 (0x103).
The thread 0x4440 has exited with code 0 (0x0).

可能性のある終了コードとその重要性のリストのようなものはありますか?

4

3 に答える 3

101

実際、この件についてはあまり説明がないようですが、終了コードは、スレッドがどのように終了したかを示すために使用されると想定されており、0安全に終了したことを意味する傾向があり、他のものは終了しなかったことを意味する傾向があります期待どおりに終了しません。ただし、この終了コードを自分でコードに設定して、これを完全に見落とすことができます。

詳細情報に役立つと思われる最も近いリンクはこれです

上記リンクより引用:

どの方法で終了しても、プロセスまたはスレッドから返される整数は 0 ~ 255 (8 ビット) の値でなければなりません。ゼロの値は成功を示し、ゼロ以外の値は失敗を示します。任意の整数値を終了コードとして返そうとすることはできますが、整数の最下位バイトのみが終了コードの一部としてプロセスまたはスレッドから返されます。上位バイトは、プロセスに関する特別な情報を伝達するためにオペレーティング システムによって使用されます。終了コードは、あるプログラムの成功または失敗に応じて他のプログラムを条件付きで実行するバッチ/シェル プログラムで非常に役立ちます。


GetEXitCodeThreadのドキュメントから

重要 GetExitCodeThread 関数は、スレッドが終了した後にのみ、アプリケーションによって定義された有効なエラー コードを返します。したがって、アプリケーションは STILL_ACTIVE (259) をエラー コードとして使用しないでください。スレッドがエラー コードとして STILL_ACTIVE (259) を返す場合、この値をテストするアプリケーションは、スレッドがまだ実行中であることを意味すると解釈し、スレッドが終了した後もスレッドの完了をテストし続ける可能性があります。アプリケーションが無限ループに陥ります。


これについての私の理解では、独自のアプリケーション用に独自のアプリケーション内でスレッドを使用している場合、終了コードはそれほど重要ではありません。これに対する例外は、相互に依存関係を持ついくつかのスレッドを同時に実行している場合です。外部ソースがこのエラー コードを読み取る必要がある場合は、他のアプリケーションにスレッドのステータスを知らせるように設定できます。

于 2013-09-19T06:52:00.347 に答える
0

私に起こったことは、ソリューションに複数のプロジェクトがあることです。プロジェクト 1 をデバッグするつもりでしたが、プロジェクト 2 がデフォルトの開始プロジェクトとして設定されていました。私はこれを修正し、プロジェクトを右クリックして「スタートアッププロジェクトとして設定」を選択し、デバッグを実行しても問題ありません。

于 2015-06-22T14:46:49.917 に答える