> I've been trying to solve a small but disturbing problem with > win32com, but I can't. > It's the "OLE Server Busy" problem [1]: > "If you call a method on a COM server from an MFC COM client > application and if the method takes a long time to process and return > back, you won't be able to do anything on the client application and > the OLE Server Busy dialog box pops up..."
Unless you are using the win32ui module, its unlikely you qualify as an "MFC COM client". > The link explains how to solve it. But it's not that straight forward > in python. They suggest using Afx* functions. It also casually mentions at the bottom: | Another way to suppress the server busy dialog box is to use | OleInitialize and OleUninitialize instead of AfxOleInit in your | application. which are easy to call. > on a DLL and then calling them from python using pyrex. But it didn't > work out. The functions are called, but the program crashes when > trying to access a member of the Filter. And adding a DLL only makes > it more complex. Yeah - things aren't going to work that well if MFC isn't correctly initialized. > There should be a simple-clean way to do that. > > Anyone had this problem before? Anyone figured out a way to fix it? Try and ensure your threads are all initialized for free-threading (setting sys.coinit_flags=0 before importing win32com/pythoncom will ensure that is true for the main thread), and that all threads are running message loops. Mark _______________________________________________ Python-win32 mailing list Python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32