Внезапный вызов:
((Microsoft.Office.Interop.Word._Application)word).Quit(SaveChanges: Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges, OriginalFormat: Type.Missing);
длится вечно (30-60 секунд) вместо максимум 3 секунд. Это не происходит, когда я использовал его для создания PDF, но когда я создаю DOCX. Я не пробовал все варианты ...
Это может быть связано с новой версией Windows в последнее время. У меня возникло это подозрение, когда я увидел, что какой-то парень обновил старый пост менее 2 месяцев назад относительно слова interop: ССЫЛКА См .: «Изменить на 2019-09-29» Я не пробовал ничего из этогоони пишут о там. Главным образом потому, что я этого не понимаю и раньше это не было необходимо.
Для меня проблема в 2 компьютерах с Windows 10. Мой рабочий стол был обновлен до 1903 неделю назад, так что это может быть. Он все еще отлично работает на моем Windows-сервере под управлением Word 2016. Мой рабочий стол работает под управлением Word 365, но так же работает Surface Pro 3 моего друга, и у него нет проблем. Я не знаю, обновлял ли он свои windows10 недавно.
Интересно, что у меня была такая же проблема, когда я просто нормально открывал слово пустым документом, а затем снова закрывал его. Окна закрылись, но текстовый процесс диспетчера задач закрывался очень долго, и это вызвало у меня подозрения. Затем я попытался поиграть со словом «настройки», и когда я выключил «Показывать сценарий запуска при запуске этого приложения», он сразу же начал закрывать процесс. Ofc Я тогда, хотя: "БОЛЬШОЙ, проблема решена", но нет. Все еще та же проблема при использовании взаимодействия. Я попытался смоделировать отключение «показать стартовый экран», добавив следующую строку: word.ShowStartupDialog = false;Это просто бросает ожидание, говоря мне, что ShowStartupDialog не доступен, когда нет открытого окна. Это может быть связано с тем, что я запускаю слово в невидимом режиме.
Я решил проблему, поместив код завершения в поток, подобный этому, в конце:
System.Threading.Thread t = new System.Threading.Thread(() =>
{
((Microsoft.Office.Interop.Word._Application)word).Quit(SaveChanges:
Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges, OriginalFormat: Type.Missing);
});
t.IsBackground = true;
t.Start();
ЗатемЯ могу продолжать работать в программе и даже снова вызывать ту же функцию, создавая другой документ. Затем он запустит другой процесс, пока старый все еще закрывается. Я только что попытался иметь 3 закрытия одновременно, что достаточно для моего использования. Кроме того, это занимает довольно много процессорных 25 +% за экземпляр! Мой компьютер не совсем новый, но он способен нормально запускать CS GO, поэтому я действительно считаю, что мощности машины должно быть более чем достаточно:).
Пожалуйста, помогите найти фактическую причину этого ирешение, так что я могу вернуться к исходному коду, который работал в течение 4 лет.