2012-04-28 5 views
1

У меня есть приложение с иконкой в ​​трее. Я использую notifyicon для выполнения этой работы. Я создал свою установку в Visual Studio, которая устанавливает и удаляет приложение.Как удалить значок корзины при удалении приложения в C#

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

ответ

2

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

В фоновом потоке вашего приложения в трее:

EventWaitHandle ev = new EventWaitHandle(false, EventResetMode.AutoReset, "MyCloseEventName"); 
ev.WaitOne(); 

В вашем деинсталлятор:

EventWaitHandle ev = EventWaitHandle.OpenExisting("MyCloseEventName"); 
ev.Set(); 
+0

Ok я получил часть о создании фонового потока, но как я называю это из деинсталлятора? Потому что в деинсталляторе я не вижу места для написания кода, поэтому я могу поднять это событие. – Ali

+0

см. Отредактированный ответ – Flot2011

+0

Но проблема в том, где я могу написать этот код в деинсталляторе? Нет возможности писать код. Проверьте прикрепленный снимок экрана, и вы увидите, что для написания кода нет .cs или другого файла. http://i.imgur.com/18yxM.jpg – Ali