Код: Выделить всё
var wordApplication = new Application {Visible = false}
Мы делаем это часто в модульных тестах и в некоторых средствах автоматизации. Но один или два раза примерно из 1000 вызовов инициализация не завершается, и процесс зависает. (Кто-нибудь знает причину?)
Чтобы решить эту проблему, я заключаю создание экземпляра в тайм-аут и пробую еще раз:
Код: Выделить всё
var wordApplication = Utilities.CallWithTimeout(
// stuff to do
() => new Application {Visible = false},
// error handler before the TimeoutException happens
() =>
{
var info = "Try to create a WordApplication failed after 15 seconds";
Tracer.TraceEvent(TraceEventType.Error, info, TraceCategory.Application);
KillWordApplicationOnError(before);
},
// timeout
TimeSpan.FromSeconds(15));
Мы убиваем приложение, идентифицируя текстовый процесс, и убиваем этот процесс. Помните, что поскольку создание экземпляра зависло, у нас нет приложения Word, которое могло бы использовать Quit(), но запущен процесс winword.exe, и нам нужно его завершить. (Как мы убиваем процесс: https://gist.github.com/JuergenGutsch/9 ... 51c15bab83)
Это решает проблему с зависанием процесса и мы получаем новую проблему , что происходит один или два раза примерно на 3000 вызовов. Новая проблема связана с безопасностью, которая отключает одну или все надстройки Word, а также некоторые пользовательские шаблоны dotm, содержащие макросы VBA.
Мы не получаем никаких исключений. и мы не получаем никаких записей в журнале событий. За исключением этого сразу после завершения процесса:
Код: Выделить всё
An exception of type 'System.Runtime.InteropServices.COMException' occurred in BIS.MEDCS.Connectivity.Word.VSTO.dll but was not handled in user code
Additional information: Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
Кто-нибудь из ты знаешь, что здесь происходит?
Подробнее здесь: https://stackoverflow.com/questions/355 ... pplication