Как мне выполнить операцию по закрытию консольного приложения C #? - PullRequest
1 голос
/ 22 декабря 2009

Я бы хотел сохранить данные из консольного приложения в его окончательном состоянии при закрытии. Я выяснил, как использовать сериализацию для сохранения данных, но не как сделать это, когда приложение закрывается.

Один из методов - установить неуправляемый обработчик для перехвата команды закрытия и выполнения операции, однако после вызова обработчика события GC () уже запущен, а управляемая программа больше не находится в памяти.

Есть идеи?


Edit: Основная проблема заключается в том, что у меня есть объект, который слушает поток в течение всей жизни программы. Если программа затем закрывается извне (например, путем нажатия кнопки x в углу), то никакой другой код в методе Main () не выполняется, минуя закрывающий код сериализации.

Ответы [ 2 ]

4 голосов
/ 22 декабря 2009

Обычно вы просто помещаете этот код в конец своей основной подпрограммы - это будет последним, что выполняется перед закрытием консольного приложения.

Если вы пытаетесь обработать что-либо в последний возможный момент до закрытия управляемого кода, вы можете подписаться на AppDomain.DomainUnload . Это событие возникает сразу после выгрузки домена приложения.

1 голос
/ 22 декабря 2009

Я бы создал экземпляр класса времени жизни приложения, который хранит состояние, и добавил бы код сериализации в его деструктор.

Другая идея заключается в использовании try {} finally {} в вашей программе.

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