Windows

c# EventWaitHandle が反応しない!?

投稿日:2013年9月23日 更新日:

スレッドを利用したプログラムで、
スレッド側での処理を待たせて、必要に応じて開始する場合には、
1.特定のフラグをポーリングする
2.EventWaitHandle を利用する。
の2つが考えられると思います。
ポーリングは処理の無駄に感じてしまうのでEventWaitHandleを使用していました。
が、しばらくたつとEventWaitHandleをset()してもWaitOneのところから開始しない状態になりました。

よくよく調べてみると、EventWaitHandle.WaitOne()にはどうやらタイムアウトがあるようです。
EventWaitHandleを使って別スレッドで処理の開始を待たせる場合には十分注意が必用です。

ちなみにタイムアウトをなしにする場合にはEventWaitHandle.WaitOne(-1)とします。

Gooleアドセンス用336

Gooleアドセンス用336

-Windows
-,

執筆者:

関連記事

Windows8.1のIE11でYahooニュースが読み込めない!?

Windowsをアップデートしたところ、 Yahooニュースを開くたびに、更新ボタンを押さないと読み込めなくなってしまいました。 インターネットオプションの詳細設定で、 拡張保護モードのチェックを外す …

windows

Windows8.1でParagon HFS+ for Windows 10.0 (Japanese)が使えない

Windows8.1にアップデートしたら、 HFS+の外付けハードディスクを認識しなくなってしまいました。 サポートにメールをしたところ、 既に新しいバージョンがアップデートされていた模様。 新バージ …

windows

Windows8.1の無線LANアダプター(WN-G300UA)でwifiのアクセスポイント(MZK-SA300D)が見えなくなった時の対応

手軽なwifiのアクセスポイント(MZK-SA300D)を使用していました。 しかし突然、頻繁に通信ができなくなりました。 繋がっては切れるの繰り返しです。 それがかなり続き、PC側の問題かもしれない …

windows

Windows XPでシンボリックリンクを使用する(linkd)

vistaでは使用できますが、XPではデフォルトでは使用できません。 Microsoftからrktools.exeをダウンロードしてインストールしましょう。 ダウンロード インストールした後に、コマン …

windows

リモートPCのサービスを操作する

遠隔地のPCのサービスを再起動したい場合って、ほとんどないのですがたまにあります。 そもそもPC Anywhere等をインストールしていればよいのですが、そうしたソフト自体がフリーズすることがあるから …