我使用了一個使用mdi的應用程序,並且腳本可以附加到一個mdi窗口並從中分離以便按需運行/停止;這個腳本加載了我的dll,它可以完成一些工作;它確實如此;然而,當我分離的腳本仍然一切正常,應用程序應該卸載dll(並調用dllmain與適當的thread_attach/detach和process_attach/detach操作)。現在,如果我嘗試將腳本重新附加到winow,或者將其附加到另一個窗口,那麼在dll被使用一次後 - 主應用程序崩潰。我已將問題解決到由dll創建的線程;胎面形成一扇窗戶;所以,我創建線程像這樣:DLL在重用後崩潰了應用程序
if (!hThread) hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);
,當腳本脫離它關閉線程像這樣(不管是否被註釋掉的行是註釋掉-OUT):
SendMessage(hWnd, WM_DESTROY, 0, 0);
//TerminateThread(hThread, 0);
//WaitForSingleObject(hWndThread, INFINITE);
CloseHandle(hThread);
hThread = NULL;
我不知道爲什麼主應用程序崩潰。一個不同的線程(即一個會簡單地睡一秒鐘和循環,不會造成任何傷害)什麼給予?
http://blogs.msdn.com/b/oldnewthing/archive/2011/09/26/10216420.aspx –
@Hans Passant謝謝你看我的問題。 Unfortunatley發送WM_CLOSE或調用DestroyWindow不能解決問題。 – user1816499
好吧,我們知道你做錯了,但我們仍然不知道崩潰的樣子。至少發佈崩潰原因和調用堆棧的內容。也可以在輸出窗口中查看任何第一次機會異常通知。 –