是否可以实现异步Outlook加载项FormRegionShowing事件处理程序?

时间:2018-08-16 05:38:59

标签: asynchronous async-await outlook-addin

我测试了一个简单的异步FormRegionShowing事件处理程序

    private async void MyForm_FormRegionShowing(object sender, System.EventArgs e)
        {                
          await Task.Delay(3000);
        }

当我在VS中调试此代码时,await命令正常运行。 FormRegionShowing事件仅触发一次,并且在电子邮件预览窗格中仅显示一个MyForm实例。但是,通过外接程序的安装程序将外接程序安装在测试计算机上时,FormRegionShowing事件将触发两次。结果,在预览窗格中显示了两个MyForm。我将Visual Studio 2015调试器附加到OUTLOOK进程上,这就是我所发现的。第一次触发事件时,程序在按下await Task.Delay(3000)命令后离开MyForm_FormRegionShowing方法。此后,立即再次触发FormRegionShowing事件。此时,等待Task.Delay(3000)命令完成。但是,由于事件被触发了两次,因此电子邮件预览窗格中会显示两个MyForm实例。你知道为什么会这样吗?谢谢。

1 个答案:

答案 0 :(得分:0)

看起来该外接程序或窗格在最终用户计算机上注册了两次。我建议从头开始创建一个新的示例加载项,以确保问题不取决于窗格或加载项。