繁体   English   中英

Outlook加载项的弹出通知(从后台线程问题调用Form.Show())

[英]Pop-up notification for Outlook Add-in (calling Form.Show() from background thread issue)

我的Outlook 2010加载项(使用VSTO)在发送邮件时在不同的线程中执行一些Web服务调用。 我想显示一个小的非模态弹出通知(如Skype / yahoo / Windows live messenger的通知),显示网络服务调用的结果。

我正在尝试根据我的要求自定义通知窗口项目 当使用以下代码从我的加载项的形式的单击事件处理程序调用时,它似乎工作正常:

private void btnOk_Click(object sender, EventArgs e)
{
    PopupNotifier notifier = new PopupNotifier();
    notifier.DisplayNotification("Test");
}

is called from the background thread doing the web-service call, the notifier hangs; 但是,当从执行Web服务调用的后台线程调用相同的方法 ,通知程序挂起; 它的形式显示在屏幕上,但似乎没有文字,颜色或动画。 它只是坐在那里,直到Outlook关闭。

我做了一些搜索,发现这可能发生,因为通知程序使用Show()方法而不是ShowDialog()来显示其表单。 由于我不想弹出通知的模态对话框,我也无法将方法更改为ShowDialog()。

根据其他文章,我也尝试使用backgroundWorkers,delegates,MethodInvoker等调用该方法,但无法获得所需的结果。

然而,在尝试上述内容时,我注意到不仅弹出通知程序,而且任何简单形式都会发生同样的情况。 如果我在后台线程中创建它并调用Show()方法,它就会卡住,而在相同的情况下,ShowDialog()似乎工作正常。

任何关于如何解决这个问题的想法将不胜感激。

我最终设法使用TaskbarNotifier项目解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM