![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
お世話様です。
Windowsのスレッドについて質問です。(WinXP C#.NET2003)
以下のようなコードでスレッドを作成した場合、どうなるのか教えてください。
private void BTN_input_Click(object sender, System.EventArgs e)
{
Thread iwth = new Thread( new ThreadStart(InputWaitThread) );
iwth.Start();
}
(1)iwthは動的に割り当てたのでBTN_input_Click関数内でのみ有効だと
思うのですが、BTN_input_Click関数を抜けてしまったあとは、
InputWaitThreadを実行するスレッドは
どういう位置づけになるのでしょうか?
(ゾンビプロセスですか?)
(2)また、このコードを含むアプリケーションの終了時、
InputWaitThreadがまだ終了していない場合は、
強制的に終了されるのでしょうか?
(3)InputWaitThreadが必ず終了するという保障がない場合には、
KILLしてやらなければいけないと思いますが、動的に割り当てたので
ハンドラがおらずKILLできませんが、どうすればいいのでしょうか?
(静的に割り当てておくしかないのでしょうか?)
以上、よろしくご教授願います。(@±@)
No.2ベストアンサー
- 回答日時:
#1です。
回答ボタンを押した後で不安になってきました(汗)
(1)についてはゾンビにならないと書きましたが、スレッド終了待ちしないとゾンビプロセスになると思います。ごめんなさい
回答ありがとうございます。
当方、投稿後も調べておりまして自己解決いたしました。
フォアグラウンドスレッド、バックグラウンドスレッドのキーワードで
調べたら解答がでてきました。
フォアグラウンド…親が死んでも子は死なない。
バックグラウンド…親が死んだら一緒に子が死ぬ。
.Start()まえに、.IsBackground = true/false で選択できるみたいです。
(デフォルトはフォアグラウンド)
この辺になるとOS/開発言語依存するので難しいですね(^^;
No.1
- 回答日時:
Windowsのスレッドは詳しくないのですが一般的な話で。
(1)BTN_input_Click関数を抜けてしまったあとは・・
BTN_input_Click関数を抜けてしまったあとが気になるようですが、そこも作るのですよ。たとえば×ボタンが押されたらスレッドの終了とか。またゾンビというのは親プロセス(スレッドを呼び出した元のプロセス)が先に死んでしまうことで、スレッドであれば親プロセスが死んだらついでに死んでしまうと思います。
(2)また、このコードを含むアプリケーションの終了時、 InputWaitThreadがまだ終了していない場合は、
強制的に終了されるのでしょうか?
そういうつくりにならないように実装します。そうなったらバグですので。
3)InputWaitThreadが必ず終了するという保障がない場合には、
KILLしてやらなければいけないと思いますが、
これもバグでは?やるとしたらタイマーをかけて自身を殺すくらいかな、でもInputWaitThreadが必ず終了するようなつくりを考えたほうが建設的かも。
間違ってたらご容赦
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- その他(プログラミング・Web制作) uwscのCHKING関数の画像の認識がうまくいかない。 1 2022/06/18 20:55
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Windows 10 windowsの回復ドライブや復元ポイントを使用した場合の戻る位置を教えてください。 5 2023/08/19 14:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VC++スレッドの正しい終了のさ...
-
pthread_mutex_lock の応答時間
-
メインスレッドのPostMessageと...
-
スレッドの安全な終了のさせ方
-
Win32APIでのスレッド処理
-
スレッドの監視方法について
-
WaitForSingleObjectの使い方に...
-
スレッドの終了の仕方
-
スレッドがサスペンドされてい...
-
C# スレッド終了の監視について
-
別スレッドからメインダイアロ...
-
スレッド終了を待つ間に開放さ...
-
DirectX キーが入力されるまで...
-
C言語で一定時間待機後、再実行
-
Windows上で、シグナル(SIGTERM...
-
頭冷やし終えました。スクリー...
-
pthread_cond_wait 取りこぼし?
-
同一スレッドで、ロックをかけ...
-
スレッド一覧の取得
-
Macターミナルで実行中のプログ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WaitForSingleObjectの使い方に...
-
VC++スレッドの正しい終了のさ...
-
スレッドの監視方法について
-
スレッドの安全な終了のさせ方
-
Windows上で、シグナル(SIGTERM...
-
マルチスレッドプログラミング...
-
スレッドの終了の仕方
-
スレッドにて同一メモリの書き...
-
VB2005 シリアル通信のClose処理
-
スレッドの終了はどうやるんで...
-
スレッドでWM_TIMERを受け取れない
-
同一スレッドで、ロックをかけ...
-
マルチスレッドのスレッド数を...
-
WaitForMultipleObjectのイベン...
-
MFC通信プログラムマルチスレッ...
-
CWnd::OnTimerのスレッドの取得
-
待機関数(WaitForMultipleObjec...
-
LinuxでDoEvents()同等機能
-
【VC++6.0(MFC)】スレッドの呼...
-
pthread_cond_wait 取りこぼし?
おすすめ情報