Перехват приложения закрывается в c # - PullRequest
2 голосов
/ 04 мая 2009

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

Это будет библиотека, которая будет использоваться в приложении форм.

Ответы [ 4 ]

4 голосов
/ 04 мая 2009

Если это приложение Windows Forms, вы можете выделить форму, щелкнуть молнией событий в окне свойств и использовать событие закрытия формы.

this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(OnFormClosing);

private void OnFormClosing(object sender, FormClosingEventArgs e)
{
    // Your socket logic here
}

Также, если вам нужно перехватить закрываемую форму, установите для свойства Cancel значение true:

e.Cancel = true;
1 голос
/ 04 мая 2009

Я бы реализовал IDisposable в классах, которые используют эти ресурсы. Затем Dispose может быть вызван явно из любого метода завершения, поддерживаемого типом приложения (OnFormClose, OnStop, Application_End, ...).

0 голосов
/ 04 мая 2009

Я не уверен, что это лучшее место для этого, но вы можете сказать, что ваш процесс закрывается, подключив AppDomain.ProcessExit . Это хорошо для очистки, но я не думаю, что это хорошее время для отправки каких-либо сообщений. :)

0 голосов
/ 04 мая 2009

Вы говорите о приложении WinForms? Если это так, используйте событие FormClosing в главной форме.

...