問:我用自己設計的類編了一個程序。當我在編譯項中設置為debug編譯時,程序運行一切正常,當為release時程序卻出了問題.怎麼會這樣?
答:1)為什麼你既建立線程又將一個類成員作為線程處理?這樣的話誰來調用你的析構函數?你不能試圖將文檔視窗類中的成員作為線程,象這樣: Ccapi::SomeFunction() { AfxBeginThread(static_cast(ThreadProc(this))); } Ccapi::ThreadProc(LPVOID ptr) { // ptr and this are equal... Ccapi* ptrApi = (Ccapi*)ptr; };如果你是這樣做的話可能需要做些改動
2)顯然,m_pOwner或者m_pOwner->m_hWnd是不正確的,試試下面的: if (NULL == capi) ::MessageBox(NULL, "bad capi", "CapiThread", MB_OK); else if (NULL == capi->m_pOwner) ::MessageBox(NULL, "bad Owner", "CapiThread", MB_OK); else if (!::IsWindow(capi->m_pOwner->m_hWnd)) ::MessageBox(NULL, "bad hwnd", "CapiThread", MB_OK);