回覆列表
  • 1 # 錘氏集團董事長小龍

    您在執行密集的 OLE 自動化,很有可能是在一個迴圈中執行,採用的是無使用者干預模式。此時會收到以下錯誤訊息:

    The remote procedure call failed.

    原因

    使用 COM 或 OLE 的每個執行緒必須分別呼叫 CoInitialize() 或 OleInitialize()。在執行此呼叫時,作業系統將建立一個隱藏的頂層視窗,此視窗歸您的執行緒所有,用於執行實施。由於作業系統依賴於後臺的 Windows 訊息處理,因此您的執行緒應該(在某些情況下必須)抽取訊息。如果未能抽取訊息,會導致自動化錯誤,有時,當其他應用程式向所有頂層視窗廣播訊息時將會出現死鎖情況(例如,一個應用程式可能會廣播 WM_WININICHANGE 或 WM_SETTINGCHANGE 訊息,通知其他應用程式預設印表機已更改)。

    解決方案

    如果迴圈使用 OLE 自動化(例如,將 10,000 行資料寫入 Microsoft Excel),則需要在迴圈內使用 PeekMessage() 迴圈,以便訊息得到處理。

  • 中秋節和大豐收的關聯?
  • 夢見蛇我和死去的母親怎麼也沒打著,跑到河裡去了?