Я делаю COM-взаимодействие COM с Excel и другим программным обеспечением автоматизации Office.COM Interop - Подождите, пока Excel завершит работу
Co-Worker сказал мне, что мне нужно дождаться, когда эти серверы автоматизации станут готовыми после выдачи им команды.
Я, однако, не вижу цели этого, так как не все вызовы блокируются, пока сервер автоматизации не завершит задание?
Например, я обычно пишу:
Dim o as AutomationObject = AutomationServer.CreateObject(x, y, z) o.Property ' could throw COM exception!!????
Мой коллега говорит, что мне нужно спать после этого вызова, потому что Automation Server может все еще работать над созданием и инициализации объекта.
Dim o as AutomationObject = AutomationServer.CreateObject(x, y, z) Threading.Sleep(5000) ' wait for AutomationServer to "become ready" o.Property ' could still throw COM exception!!????
У меня есть проблема с этим состоит в том, что AutomationServer вызовы должны блокировать, пока AutomationServer не закончит или завершает то, что она работает или, по крайней мере, он должен быть цикл проверки, если «о» ничего нет, но это не имеет никакого смысла, потому что, как только звонок вернется, он будет сделан!
Мой вопрос: есть ли какие-либо преимущества для Спящего после вызова AutomationServer? Есть ли способ «подождать» до тех пор, пока AutomationServer не завершится (если он фактически не заблокирован)?