Masz kilka opcji:
1) Napisać korzeniowy strukturze obsługi wyjątku, który zapewnia zniszczenie ikonę przed wyjściem. Ten wymaga trochę wysiłku - ale zasadniczo można dodać do systemu Windows własną nieobsługiwaną procedurę obsługi wyjątków, która będzie wywoływana w przypadku wielu form "boomu", co pozwoli ci na ostatnią szansę oczyszczania.
2) Napisz aplikację monitorującą, która śpi na głównym uchwycie procesów, i zabija ikonę po jej pobudzeniu (główna aplikacja zginie). Aby ten drugi scenariusz działał dobrze, najprawdopodobniej będziesz chciał, aby główny proces NIE zabijał samej ikony - lub możesz stworzyć sposób, aby poinformować aplikację monitorującą, że powinna wyjść z niszczenia ikony (czy aplikacja monitorująca śpi zarówno na uchwycie procesu, jak i nazwanym wydarzeniu - a jeśli zostanie on obudzony przez zdarzenie, po prostu umiera bez czyszczenia po głównej aplikacji).
Więc nie ma zdarzenia, które mógłbym zdobyć na wypadek śmierci programu? – Malfist
Nie, nie ma zdarzenia. To jest "normalne" zachowanie ... każda aplikacja, która ma ikonę w zasobniku systemowym, pozostawia ikonę, gdy wychodzi poza normalnie. – jrista
Jest bardzo mało prawdopodobne, że nie będziesz miał okazji wyczyścić ikony. AppDomain.ProcessExit jest całkiem dobrym wydarzeniem do wysłuchania wyjścia procesu. Jeśli nie wywołasz funkcji Environment.FailFast(), będzie ona prawdopodobnie wywoływana nawet w 'katastrofalnych' okolicznościach –