• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[C#/.NET2.0] 状況によりスレッドを実行しないで終える方法)

[C#/.NET2.0] 同時に複数のスレッドを終了させる方法

このQ&Aのポイント
  • 初心者のため、C#と.NETでのマルチスレッド制御について悩んでいます。
  • あるスレッドが実行中の場合、他のスレッドが待機せずに終了する排他的な処理を作りたいです。
  • 現在はロックオブジェクトを使用して実装していますが、他の書き方や作法があるかどうか知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

普通は System.Threading.Monitor クラスでしょうね。 ロックのタイムアウトを 0 に設定して、ロックを取得できなければ、 という処理がいいと思います。

MAGNAFIFTY
質問者

お礼

kentarou2333さん、回答ありがとうございます。 MSDNのMoitorクラスを眺めましたら、TryEnter()を見つけました。おっしゃるとおり、普通これだろ?っていう機能ですね。書き換えてみました。 01:void func() { 02:  //===== Exclusive lock without blocking ===== 03:  //(*) Exit if another thread is running. 04:  if( !Monitor.TryEnter(this) ) { 05:    return; 06:  } 07: 08:  //===== Function Body ===== 09:    /* Some behavior */ 10:} Monitorメソッド一覧を何度もみてたのに、こんな気がつきそうな名前を見落としてました・・・排他制御というと、ブロックするという固定観念があり、目にうろこでした。ともあれ、勉強になりました。ありがとうございます! ダメダシ等あるとうれしいので、もう数日待って、クローズさせていただきます。