Article ID: 181894
Article Last Modified on 1/7/2006
APPLIES TO
- Microsoft Visual C++ 2005 Express Edition
- Microsoft Visual C++ .NET 2003 Standard Edition
- Microsoft Visual C++ .NET 2002 Standard Edition
- Microsoft Visual C++ 6.0 Professional Edition
- Microsoft Visual C++ 6.0 Enterprise Edition
- Microsoft Visual C++ 6.0 Standard Edition
- Microsoft Visual C++ 5.0 Professional Edition
- Microsoft Visual C++ 5.0 Enterprise Edition
- Microsoft Visual C++ 4.0 Standard Edition
- Microsoft Office 97 Standard Edition
This article was previously published under Q181894
SYMPTOMS
You are performing intensive OLE Automation, most likely in a loop without user intervention, and receive the following error message:
CAUSE
Every thread that uses COM or OLE must call the CoInitialize function or the OleInitialize function, respectively. When this call is made, the OS creates a hidden top-level window, owned by your thread, for implementation purposes. Because the OS relies on Windows messaging behind-the-scenes, your thread should, and in some cases MUST, pump messages. Failure to do so can result in automation errors, and sometimes in a deadlock situation when another application broadcasts a message to all top-level windows (for example, an application might broadcast a WM_WININICHANGE or WM_SETTINGCHANGE message to notify other applications the default printer has changed).
RESOLUTION
If you are using OLE Automation in a loop (for example, writing out 10,000 rows of data to Microsoft Excel), you need a PeekMessage loop inside your loop so that messages will get processed.
STATUS
This behavior is by design.
MORE INFORMATION
Here is an example of a PeekMessage loop you can use in your code.
MSG msg; while(PeekMessage(&msg, NULL, NULL, NULL, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); }
REFERENCES
Microsoft Visual C++ online for PeekMessage
For more information, click the following article number to view the article in the Microsoft Knowledge Base:
136885 OLE threads must dispatch messages
Additional query words: excel office rpc -2147418095 800706BE 0x800706BE 1726
Keywords: kberrmsg kbtshoot kbthread kbautomation kbprb KB181894