C# консольное приложение, сохранить состояние перед закрытием как?
Я бы добавил Setting файл (ссылку на работу с файлом параметров Вам постом выше оставили), в который добавил бы необходимые параметры для запуска приложения. При начале работы приложения брал бы данные от туда. Когда эти параметры будут меняться в процессе работы, их сохранять в этом файле. И каким бы образом приложение ни закрылось, текущее состояние будет сохранено в сеттинге.
Ну лучше это делать вне события и сохранить в параметрах. На пример входные данные как только вы их получили. Или там просто в файл.
Есть конечно AppDomain.ProcessExit, но он допустим не вызовется при убийстве программы через таск менеджер или Ctrl+C /break.
Тогда надо подписываться и на Console.CancelKeyPress.