Я создаю приложение, которое будет оставаться в лотке, время от времени он будет выполнять служебный вызов, и если служба вернет результат, он покажет его как хорошее окно в нижнем правом углу.
Я нашел красивый компонент как codeproject - http://www.codeproject.com/Articles/277584/Notification-Window Это уведомление работает хорошо, если оно используется в приложении форм, но когда я пытаюсь показать его из ApplicationContext, оно останавливает мое приложение - уведомление отображается, но когда я пытаюсь щелкнуть по нему, получить ошибку ответа.Окно ApplicationContext и message в нижнем правом углу
class TrayContext : ApplicationContext
{
private System.Timers.Timer appointmentTimer;
private PopupNotifier notification;
public TrayContext()
{
notification = new PopupNotifier
{
AnimationDuration = 500,
ContentFont = new System.Drawing.Font("Tahoma", 8F),
Image = null,
OptionsMenu = null,
Scroll = false,
ShowHandCursor = false,
Size = new System.Drawing.Size(400, 100),
TitleFont = new System.Drawing.Font("Segoe UI", 11.25F)
};
//timer
appointmentTimer = new System.Timers.Timer();
appointmentTimer.Interval = 600000;
appointmentTimer.Elapsed += AppointmentTimerTimerElapsed;
appointmentTimer.Start();
}
private void AppointmentTimerTimerElapsed(object sender, ElapsedEventArgs e)
{
appointmentTimer.Stop();
notification.TitleText = "Test";
notification.ContentText = "This should work";
notification.Popup();
appointmentTimer.Start();
}
}
Вот поведение, что я получаю (курсор занят не указатель):
Я пытался сделать это с помощью делегатов, а потому, что я использую ApplicationContext у меня нет метод BeginInvoke, но даже добавив, что нравится ниже не помогло:
private void BeginInvoke(Delegate callback, object[] args)
{
syncContext.Post(state => callback.DynamicInvoke((object[])state), args);
}
Я могу показать это уведомление от формы, но как я должен показать его от ApplicationContext?