掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
WaitForSingleObject関数について (ID:57352)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ありがとうございます。 >「次の処理」ってどこの事でしょうか? >子スレッドは孫スレッドの終了を待っていないので、 >子スレッドは即終了し、メインスレッドのWaitForSingleObject()も >即脱出すると思いますよ。 大変失礼しました。コードの転記を間違えました。 //メイン処理 main { m_pThread = AfxBeginThread( ThreadFunc , this ); //子スレッド起動 } //子スレッド処理 static UINT ThreadFunc( LPVOID pParam ); { メイン処理... m_pThread_Sub = AfxBeginThread( ThreadFunc_Sub , this ); //孫スレッド起動 WaitForSingleObject( m_pThread->m_hThread, INFINITE); //子スレッドが孫スレッド終了を待つ メイン処理続く... } //孫スレッド処理 static UINT ThreadFunc_Sub( LPVOID pParam ); { SHELLEXECUTEINFO flowx={sizeof(test),SEE_MASK_NOCLOSEPROCESS, NULL,"open","d:\test.exe",NULL,NULL,SW_HIDE, AfxGetApp()->m_hInstance}; ShellExecuteEx(&test); //起動 WaitForSingleObject(flowx.hProcess,INFINITE); //ここでtest.exeの終了を待ってくれない } 孫スレッドでは、ShellExecuteEx()関数を実行しているのですが、 別の処理(1分程度のループ処理)に変えてみたら WaitForSingleObject()関数が正常に動いているようでした。 どうもShellExecuteEx()関数の実行方法に問題があるようなのですが 原因がわからなくて困っていますので教えていただけたらと思います。 なお、デバッグコンパイルではうまく動作するのですが...
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.