5

VS2008ヘルプファイルを読むと、スレッド(.net内)を終了するクリーンな方法は、returnステートメント(C#内)を使用するか、スレッドをメソッドの最後に到達させることであることがわかりました。

ただし、スレッドの終了コードを設定したり、スレッドを取得する方法を設定したりできるメソッドやプロパティは見つかりませんでした(Win32 APIを使用して行われるため)。したがって、問題は、C#と.netを使用してこれを行うにはどうすればよいですか?

ご協力ありがとうございました、

ジョン。

4

1 に答える 1

7

基になる Win32 スレッド プリミティブが公開されていない理由は、マネージ コードがそれらに依存するのを防ぐためです。CLR チームは常にスレッドの使用を最適化する方法に取り組んでおり、1:1 のマネージド スレッドとアンマネージド スレッドのマッピングに関する保証は含まれていません (たとえば、この MSDN ページの「注」を参照してください)。それでも本当にやりたい場合は、Win32 GetCurrentThread() からのアンマネージ スレッド ハンドルを使用する P/Invoke ラッパーをセットアップするか、カスタム ホストを使用して自分でスレッド マッピング プロセスにフックする必要があります。スレッド終了コードを使用し、管理されたコードを認識しないものと相互運用する必要がある場合を除き、どちらもお勧めしません。すべて管理できる場合 (またはTask Parallel Libraryを使用する場合)、状態情報を密輸する別の方法を見つけます。ベアスレッドからレベルを抽象化します)。

于 2011-04-12T01:18:00.500 に答える