Как происходит закрытие приложений форм Windows и процессов Excel.exe (возможно, через сборщик мусора)? - PullRequest
2 голосов
/ 02 марта 2012

Я, пожалуй, единственный человек, все еще автоматизирующий Excel таким образом, и я пытаюсь сделать это так, чтобы лучше обрабатывать COM-объекты и тому подобное, но сейчас я просто импортирую Microsoft.Office.Interop.Excel и продолжаю.Поначалу меня сильно огорчало то, что процессы Excel.exe зависали, но в сети есть масса ресурсов для исправления , что .На данный момент я довольно уверен в своих способностях справиться с этим.

Одна вещь, которую я заметил, и мне было интересно узнать, как закрытие оконных форм взаимодействует с Excel.exe, работающим в фоновом режиме и, вероятно, более конкретносборщик мусора.Я написал довольно много систем автоматизации Excel проектов и заметил, что после запуска моей программы .exe и ее завершения есть процесс Excel.exe, который зависает до тех пор, пока я не закрою всплывающее окно из форм Windows.приложение.Почему это происходит?

Разве vb.net не вызывает сборщик мусора до закрытия окна?Глядя на код, который я пишу, нет ссылки на событие «при закрытии окна приложения», и вызовы сборщика мусора и освобождения COM-объектов в коде в порядке, поэтому мне кажется любопытным, что после выполнения кода (которыйЯ имею в виду, что сборщик мусора был вызван, как в коде), есть процесс excel.exe, который продолжается до тех пор, пока я фактически не закрою окно приложения формы Windows.любой прямой будет оценен.Спасибо.

1 Ответ

0 голосов
/ 06 марта 2012

Убедитесь, что вы вызываете метод Quit для объекта Excel в конце вашего блока кода, и вы можете собирать мусор для хорошей меры, но он должен вскоре закрыться. У меня была такая же проблема, но я обнаружил, что мне пришлось избавиться вручную.

...