2009-05-15 18 views
0

私は、borland開発スタジオでC++を使用してプロセスを開始しています。プロセスが起動された後、親アプリケーションはそれを待つが、依然としてウィンドウメッセージを処理し続ける。spawnlを使用して子プロセスが終了するのを待つ

私は、タイマーを起動した後にP_WAITでspawnlを使用しようとしましたが、スレッドがブロックされたときにタイマーが起動しませんでした。また、P_NOWAITと共にspawnlをcwaitと共に使用しようとしました。

提案がありますか?

多くのおかげ

+0

実際に動作しないものを明確にしてください。子アプリケーションの前に親アプリケーションが終了するか、メッセージの処理などが停止されますか? –

+0

親アプリケーションは子プロセスが戻るまで応答を停止する必要がありますが、いつものようにいくつかの例外がありますので、子プロセスが戻るまで選択メッセージを処理し続けたい –

答えて

1

あなたがWindowsメッセージを処理する方法で完了するためのプロセスを待っていますか?ボタンクリックのハンドラで新しいプロセスを待つ場合、Windowsはbutton-clickメソッドが完了するまで、これ以上メッセージを処理しません。

あなたはいくつかのオプションを持って処理するタイマーベースのバックグラウンドが必要な場合:

  1. は、完了するまでのプロセスを待つスレッドを作成します。
  2. WaitForExit()を使用して定期的にチェックする新しいタイマーを作成して、他のプロセスがいつ完了するかを判断します。
  3. 現在のハンドラでは、タイマ期間を引数としてWindows WaitForExit()を呼び出します。 WaitForExit()が返ってきたときにプロセスが完了していない場合は、タイマーベースの処理を行います。このオプションを選択しても、Windowsメッセージは処理されません。
関連する問題