CDialog ベースのアプリケーションを閉じようとしています。CWnd::OnClose() を呼び出すと、デバッガーが Windows システム ファイルに入ります。デバッガーの出力ウィンドウで、これらのループ行が無期限に表示されます。
スレッド 'Win32 スレッド' (0x1040) はコード 0 (0x0) で終了しました。スレッド 'Win32 スレッド' (0x2fa4) はコード 0 (0x0) で終了しました。スレッド 'Win32 スレッド' (0x1ca0) はコード 0 (0x0) で終了しました。'LifescanDatabaseApplication.exe': アンロードされた 'C:\Windows\SysWOW64\davclnt.dll' 'LifescanDatabaseApplication.exe': アンロードされた 'C:\Windows\SysWOW64\davhlpr.dll' 'LifescanDatabaseApplication.exe': ロードされた 'C:\Windows \SysWOW64\davclnt.dll'、PDB ファイルが見つからないか、開くことができません 'LifescanDatabaseApplication.exe': Loaded 'C:\Windows\SysWOW64\davhlpr.dll', PDB ファイルが見つからないか、開くことができません
私が壊したもの、またはそれを追跡する方法についてのアイデアはありますか? ありがとう、ジェームズ
編集 ダイアログの OnClose() 関数をここに示します。
void CApplicationDlg::OnClose()
{
UpdateData(TRUE);
if(AfxMessageBox(_T("Are you sure you want to close? If so, no more updates will be issued"),MB_YESNO)==IDYES)
{
Logger * instance = Logger::Instance();
if(instance!=nullptr)
{
instance->writeToLogFile("Application shutdown.");
}
CWnd::OnClose();
}
}
Cwnd::OnClose() コマンドを使用して、デバッガーでこれを追跡しました。問題は、コードが、ダイアログ ボックスを呼び出して EndDialog を実行する部分に戻っていないことです。この作業を停止しているダイアログ ボックス コードのどこかを変更したと思います。
編集 2: CWnd::OnClose() を this->EndDialog(0) に置き換えると問題が解決するように見えますが、これは心配です。