エラーコード取得

[戻る]
烈人 2009/04/22(水) 10:54:39
今、こんな形で↓
Thread^ t = gcnew Thread(gcnew ThreadStart(mbc,&MultiBootClass::ThreadProc));
t->Start();

スレッドを作成して、起動させています。そこで、スレッドが起動しなかった場合に、
エラーコードを取得して、スレッドを終了させたいのですが、何か良い方法ないです
か?

ちなみに環境はvc++ 2008 Express Editionです

aetos 2009/04/22(水) 11:25:35
「起動しなかった場合に終了させたい」とはおかしな話ですね。
起動していないものを終了できるのですか?

何らかの理由によって、スレッドの開始自体が正常に行われなかった場合(ThreadProcの
実行までたどり着かなかった場合)は、システムが例外を投げるんじゃないかと思いま
す。
従って、もしそういう可能性を考えるなら、例外を適切に処理すべきであって、エラーコ
ードの出番はありませんし、前述の通り、終了させることはできません。

もし、スレッドの起動は正常に行えた(ThreadProcの実行が開始された)けれども、意図
していた処理を完遂することができずに終了してしまった場合…というなら、方法はいく
らでも考えられるでしょう。
ParameterizedThreadStart の引数にエラーコード用のメンバを設けておくもよし、
MultiBootClass のメンバに設けておくもよし、それ以外のどこかアクセス可能な変数に
入れるもよし。

烈人 2009/04/22(水) 13:04:29
すみません。何か勘違いをしてました。スレッドが起動しなかったらではなくて、
スレッドが生成できなかったら、プログラムを終了するでした。どうやったら良いか、
いまいちよく分かりません。

aetos 2009/04/22(水) 13:12:29
ですから、スレッドが生成できなかった場合には、おそらく例外が発生するでしょうか
ら、それを捕まえて適切に処理してくださいと書いています。
例外処理の方法は別途学んでください。

もし、終了時に何らかの終了処理をすることもなく、わけのわからないエラーメッセージ
を表示して落ちてしまってもよいのならば、何もする必要はありません。
システムが勝手にプログラムを落としてくれます。

古いスレッドには追加発言できません。