gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:40:14 26 4
gpt4 key购买 nike

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

我正在尝试自定义 Notification Window project根据我的要求。当使用以下代码从我的加载项表单的单击事件处理程序调用时,它似乎工作正常:

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

但是,当后台线程调用相同的方法notifier.DisplayNotification("Test") 进行网络服务调用时,通知程序挂起;它的形式显示在屏幕上,但似乎没有文本、颜色或动画效果。它只是坐在那里,直到 Outlook 关闭。

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

根据其他文章,我也尝试过使用backgroundWorkers、delegates、MethodInvoker等方式调用该方法,但没有得到想要的结果。

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

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

最佳答案

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

关于c# - Outlook 加载项的弹出通知(从后台线程问题调用 Form.Show()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13005994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com