Как сделать что-то, прежде чем процесс будет убит в Windows - PullRequest
3 голосов
/ 10 марта 2011

Моя программа должна занимать некоторые ресурсы. Я хочу освободить эти ресурсы перед выходом. Этого легко добиться, когда выход извиняемого нормален. Однако, что если пользователь откроет диспетчер задач в Windows и уничтожит исполняемый файл? В этом случае мои деструкторы не пострадают.

Кто-нибудь знает хорошего партнера для решения этой проблемы? (С #)

Большое спасибо,

Ответы [ 3 ]

4 голосов
/ 10 марта 2011

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

2 голосов
/ 10 марта 2011

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

0 голосов
/ 10 марта 2011

Кажется невозможным реагировать на убиваемый процесс.Для этого можно использовать сигналы, но, как говорит док ( здесь ), сигнал SIGTERM не генерируется в Windows NT.

Вы можете попробовать PInkoke функцию signal и поймать SIGINT, если ваша программа является консольным приложением и вы хотите реагировать на ctrl + c.

Как говорили другие, Windows освободитсяРесурсы для вас и единственное, что опасно, это то, что ваши открытые файлы останутся в неизвестном состоянии, так что это может не стоить усилий.

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