Ich denke mal, daß das CloseHandle eher in einem finally-Block stehen sollte. Ansonsten bleibt die Referenz nämlich im Fehlerfall.
Sonst sehe ich auf Anhieb keine Probleme.
Allerdings ist die beste Methode das zu ermitteln was du willst noch immer
WaitForSingleObject.