2つのスレッドを走らせていて
片方であるイベントを WaitForSingleObject() でまたせておいて
他方でそのイベントを SetEvent() して
同期させるような処理を書いたのですが,
そのプログラムを起動して
常にではないですが半々くらいの割合で
SetEvent() しても Wait 関数が値を返さずに
処理がつまってしまうケースがあります

なぜこのようなことが起こるのでしょうか?
こうならないようにするにはどうしたらいいのでしょうか?