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
-,

執筆者:

関連記事

sqlserver

SQL Server Management Studio でテーブルが変更できない

私は以前はOracleをメインで使用し、そしてここ数年間はMySQLをメインで使用しています。SQL Serverは少しかじった程度といえるでしょう。 こんな私が選択したのはSQL Server Ma …

windows

Wget for Windows(Windows版のwget)

linuxを使用する人の多くはwgetを利用したことがあるでしょう。 get、postが驚く程簡単に利用できます。 そしてコマンドなのでグラフィカルな点は劣りますが、 簡単にコピーや編集をしてバッチが …

windows

batファイル名の落とし穴・・・連続実行されてしまう

windowsのコマンドプロンプトを少しかじったことがあればxxx.batという名前のバッチファイルなるものを作成することがあるでしょう。 コマンドをバッチファイルにしておけば、 ダブルクリックで実行 …

windows

pingのTTLでOSを判別する

pingのTTLを見ると、簡単なOSの判別が可能です。 これは私のPC(Windows)と、そのPC上で起動させているCentOS(linux)へそれぞれpingを打った時のものです。 TTLが128 …

PHPでは文字列の比較に==を使用してはいけない

==を使用しても、文字列の比較にはなりません。 必ず「===」もしくは「strcmp」を使いましょう! 否定する場合は「!==」です。 もし「==」とすれば”00″は&#822 …