Сворачивание приложения в трей

1,00
р.
Допустим есть программа которая фоном делает определенные операции, не важно какие, допустим каждые 10 секунд собирает информацию по нагрузке ЦП и RAM. Программа сама по себе десктопная, запускается ручками, надо бы сделать ее чтобы она в авторане запускалась.
Вопрос: как научить ее чтобы при сворачивании она скрывалась в трей, и при необходимости опрокидывала какие либо сообщения. Например как антивирус касперского. Висит в трее, опрокидывает уведомления, когда открываешь - появляется в панеле задач

Ответ
Я использую Hardcodet.NotifyIcon.Wpf
В XAML добавьте пространство имен: xmlns:tb="http://www.hardcodet.net/taskbar"
В контейнер окна поместите:

Для того чтобы свернуть окно в трей, подпишитесь на событие StateChanged:
WindowState prevState
private void Window_StateChanged(object sender, EventArgs e) { if (WindowState == WindowState.Minimized) Hide() else prevState = WindowState }
Чтобы развернуть, например при левом клике по иконке в трее:
private void TaskbarIcon_TrayLeftMouseDown(object sender, RoutedEventArgs e) { Show() WindowState = prevState }
Для отображения каких-либо сообщений, можно использовать, например, Popup или ToolTip