Обработать событие закрытия приложения без обработчика события Dispose - PullRequest
0 голосов
/ 11 сентября 2018

Я хотел бы знать, есть ли возможный способ обработки закрывающего приложения в Visual Studio 2008 без использования обработчика событий dispose.

Если мое приложение дает сбой или я закрываю его во время работы:

Private Sub Foo_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed

не называется.

Это приводит к серьезной проблеме, потому что в настоящее время я работаю с несколькими файлами Excel, и они остаются открытыми после сбоя приложения, или я закрываю его во время работы.

Есть ли способ обработки такого рода события закрытия приложения?

1 Ответ

0 голосов
/ 11 сентября 2018

В обычной ситуации, когда ваше приложение просто закрывается, вы можете подписаться на MyApplication.Shutdown событие и закрыть там свои документы Excel.

Подписаться на событие можно с помощью следующих шагов:

  1. Щелкните правой кнопкой мыши свой проект в Solution Explorer и нажмите Properties.

  2. Перейдите на панель Application и нажмите View Application Events.

  3. В открывшемся файле либо напишите свой обработчик событий самостоятельно, либо дайте VS сделать это, сначала выбрав (MyApplication Events) в левом поле со списком над текстовым редактором, затем выбрав Shutdown в правом поле со списком.

Теперь у вас должен быть обработчик событий, похожий на приведенный ниже. Просто иди и сделай свою уборку там:

Private Sub MyApplication_Shutdown(sender As Object, e As System.EventArgs) Handles Me.Shutdown
    'Do your cleanup here...
End Sub

Для сбоев приложений, вызванных исключениями CLR, вы можете использовать событие AppDomain.UnhandledException , но для более серьезных сбоев вы не можете сделать очень много.

Обходной путь может заключаться в создании другого приложения, которое отслеживает ваше основное приложение. Когда другое приложение обнаружит, что процесс вашего основного приложения завершен, он закроет документы Excel. Сложная часть этого решения - передача информации, необходимой другому приложению для закрытия документов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...