У меня есть приложение, которое запускает новый поток, чтобы показать значок панели задач.Теперь я просто не могу понять, как я могу вызвать TaskbarIcon (он создается в новом потоке) из моего основного потока, чтобы показать всплывающую подсказку.
Код, который у меня сейчас есть:
public class NotificationHelper
{
private TaskbarIcon notifyIcon { get; set; }
public NotificationHelper()
{
Thread thread = new Thread(OnLoad);
thread.SetApartmentState(ApartmentState.STA); //Set the thread to STA
thread.Start();
}
public void ShowNotification(string text)
{
notifyIcon.ShowBalloonTip("Demo", text, notifyIcon.Icon);
}
public void OnLoad()
{
notifyIcon = new TaskbarIcon();
notifyIcon.Icon =
new Icon(@".\Icon\super-man-icon.ico");
//notifyIcon.ToolTipText = "Left-click to open popup";
notifyIcon.Visibility = Visibility.Visible;
while (true)
{
Thread.Sleep(1000);
}
}
private void ShowBalloon()
{
notifyIcon.ShowBalloonTip("Demo", Message, notifyIcon.Icon);
}
}
И когда я пытаюсь вызвать 'ShowNotification ("foobar");'Я получаю это исключение:
Object reference not set to an instance of an object.
Причина, по которой у меня есть 'while (true) {}' в 'Onload ()', заключается в том, что мне нужно, чтобы поток работал, пока я не закрою свое приложение.