首页 > 解决方案 > 是否可以实现异步 Outlook 插件 FormRegionShowing 事件处理程序?

问题描述

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

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

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

标签: asynchronousasync-awaitoutlook-addin

解决方案


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


推荐阅读