Outlook加载项已禁用,因为速度太慢

问题描述 投票:0回答:1

我正在使用C#开发一个简单的Outlook加载项。现在,当我测试发布时,突然Outlook打印错误消息并禁用我的加载项:

This add-in caused Outlook to start slowly. (1.594 seconds)

我不确定是什么原因引起的。我所做的所有Onload都是这样的:

功能区按钮 我正在使用单个功能区按钮,我在AddIn中初始化如下:

protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
    {
      return new MyRibbonButton();
    }

功能区按钮构造函数 功能区按钮初始化对象。所以没什么特别的。

public MyRibbonButton()
{
    this.guiSettings = new AppSettingsManager(root.localmachine, "GUI", false);
}

...

public AppSettingsManager(root type, string subpath, bool writable)
{
    if (subpath != "")
    {
        this.PATH += @"\" + subpath;
    }
    this.type = type;
    this.writable = writable;
}

图标 在相同的MyRibbonButton类中,我根据注册表中的值声明我想用于我的按钮的图标。

public Bitmap imageSuper_GetNotifyImage(IRibbonControl control)
{
    switch (guiSettings.GetValueInt32("Icon", 1))
    {
        case 1:
            return Properties.Resources.icon1;
        case 2:
            return Properties.Resources.icon2;
        case 3:
            return Properties.Resources.icon3;
        default:
            return Properties.Resources.icon1;
    }

}

正如你所看到的,除了最后一部分中的Registry Read之外,我没有做任何特别的事情。你认为这会导致Outlook慢慢开始吗?如果是这样,我该如何优化它。

c# outlook outlook-addin add-in
1个回答
1
投票

加载.Net系统会受到惩罚。曾经有一个“预热”注册表项,可用于强制Outlook加载正确版本的.Net运行时而不会受到惩罚,但该密钥不再有效。

我能够解决这个问题的唯一方法是在Delphi中创建一个存根插件(如果不是更好的话,C ++也能正常工作)除了由Outlook(大约20ms)加载并启动计时器之外什么都不做。当计时器触发时(Outlook将处于空闲状态而不监视插件),它将使用IManagedAddin接口加载从属.Net插件。

© www.soinside.com 2019 - 2024. All rights reserved.