一段在主線程下調試成功的代碼,移植到多線程下就不一定完全可行(雖然編譯通過)。
比如剛剛寫的一段調用遠程WebService的代碼,每次點擊“開始”按鈕,就報錯“尚未調用coinitialize”,檢查了一下代碼,貌似沒發現有啥不妥,沒法子,只有百度去了。
百度后才發現,原來多線程下使用WebService還有“秘密”:必須在使用前初始化COM環境,具體操作如下:
1、uses ActiveX;
2、使用前先CoInitialize(nil);
3、使用完后CoUninitialize;
再次調試,搞定~~~特發此文。
上述是delphi語法,C++等也需要如此操作,方法類似。
新聞熱點
疑難解答