@asdz

Почему после закрытия вручную, Microsoft Excel остается висеть в списке процессов?

для распечатки документов создаю новый документ Excel
excelApplication = new Excel.Application();
excelApplication.DisplayAlerts = true;
excelApplication.WindowState = Excel.Enums.XlWindowState.xlMaximized;
excelApplication.Visible = true;

вывожу все что надо, пользователь сам отправляет на принтер и закрывает Excel, но после его закрытия и закрытия моей программы в списках процессов остается висеть Microsoft Excel. Откуда он берется если все программы закрываются, и как этого избежать?
Если сделать
excelApplication.Quit();
excelApplication.Dispose();

то в диспетчере задач все ок, но мне нужно чтобы пользователь работал с документом.
  • Вопрос задан
  • 4270 просмотров
Пригласить эксперта
Ответы на вопрос 2
Neuroware
@Neuroware
Программист в свободное от работы время
Очевидно если программу не закрыть она останется незакрытой. Вы создаете процесс программно, поэтому пользовательское "закрытие" для него ничего не значит, он ждет пока ему пошлют програмно команду закрытия. Как вариант можно попробовать определить признак того что пользователь закрыл и после завершать программно, или открывать excel другим способом, например через Process
Ответ написан
@mayorovp
Вот вы написали, чтобы закрыть программу, вот это:
excelApplication.Quit();
excelApplication.Dispose();


А вы не думали, что эти два метода отдельно друг от друга тоже что-то означают? :)

Quit означает выход из программы. Это - именно то, чего вы желаете избежать - чтобы позволить пользователю сделать это самостоятельно. А вот Dispose означает освобождение канала управления. Попробуйте вызвать Dispose, не вызывая Quit.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы