Я тоже работаю с NotifyIcon, и есть некоторые проблемы с этим. Во-первых, вам нужно установить значок для NotifyIcon и быть уверенным, что вы не задали его видимость ничем, кроме Visibility.Visible.
Затем NotifyIcon - это всего лишь оболочка API-интерфейса NotifyIcon, и есть известная проблема, которую она не всегда может быть создана. Поэтому, когда вы инициализируете NotifyIcon , он может выдать исключение из-за ошибки в Windows (WinApi возвращает false, если он не может быть создан, а в исходном коде они выбрасывают там исключение). Когда это произойдет, вы можете просто воссоздать NotifyIcon в цикле, пока он не будет создан.
Я также видел проблему когда-то, когда NotifyIcon не был создан в app.xaml как объект XAML, а в коде, так как тогда я всегда создаю его в XAML, а не в коде. Также теперь я импортировал whole NotifyIcon project from CodeProject, чтобы иметь возможность отлаживать его интерьер. Так что теперь я создаю его таким образом:
<NotifyIcon1:NotifyIcon x:Key="NotifyIcon" x:Name="notifyicon"
ToolTipText="" Visibility="Visible" IconSource="/Images/Icons/bulb.ico"/>
Это должно выбросить исключение, если значок не может быть создано в этой части кода в библиотеке NotifyIcon:
/// <summary>
/// Creates the taskbar icon. This message is invoked during initialization,
/// if the taskbar is restarted, and whenever the icon is displayed.
/// </summary>
private void CreateTaskbarIcon()
{
lock (this)
{
if (!IsTaskbarIconCreated)
{
const IconDataMembers members = IconDataMembers.Message
| IconDataMembers.Icon
| IconDataMembers.Tip;
//write initial configuration
var status = Util.WriteIconData(ref iconData, NotifyCommand.Add, members);
if (!status)
{
throw new Win32Exception("Could not create icon data");
}
//set to most recent version
SetVersion();
messageSink.Version = (NotifyIconVersion) iconData.VersionOrTimeout;
IsTaskbarIconCreated = true;
}
}
}
Либо напрямую отредактируйте код в соответствии с вашими потребностями или попробуйте воссоздать notifyicon, когда есть Исключение.
Я думаю, это будет проблемой, потому что это было то же самое для нас, поскольку иногда после запуска Windows еще не готова к созданию значка. Если у вас есть еще одна проблема, отправьте код, который вы используете для создания notifyicon и системы (XP? 64bit?), На которой возникает проблема.