メイン アプリケーション exe がアップデータ exe を起動し、コマンド ラインで自分自身にハンドルを渡すセルフ アップグレード プロセスを実装しています。次に、アプリケーション exe は ExitProcess を呼び出して終了し、アップデーターは渡されたハンドルで WaitForSingleObject を呼び出して、アプリケーション exe が終了するのを待ちます。
WaitForSingleObject は待機します。アプリケーションが ExitProcess を呼び出すまで、アップデーターは停止します。
ただし、アップデーターが新しいバージョンでアプリケーション dll を上書きしようとすると、ファイルがロックされたエラーが発生することがあります。これは、アップデーターの現在のバージョンが回復不能なエラーとして処理し、終了します。この「問題」を回避するには、任意の sleep(100) を含めるだけで十分なようですが、そのようなコードは本当に嫌いです。本当に嫌い。
dll ファイルをロックするのに十分なほどメイン アプリケーションがまだ生きている間に、プロセス ハンドルにシグナルを送ることができるというのは、私には非常に奇妙に思えます。