在 outlook 插件的自定义任务窗格中打开的用户控件在窗格关闭时不会被处置

The user control that is opened in custom task pane of outlook plugin, doesn't get disposed when the pane is closed

我正在开发 outlook plugin.I 在 outlook 工具栏中添加了一个按钮,当用户单击该按钮时,web 服务是 called.Depending 根据该 web 服务的结果,用户控件被加载到自定义任务 pane.When 用户关闭了自定义任务窗格,我在用户 control.I 上调用了 dispose 方法,还在其处置事件中处置了此用户控件的子控件,并从 customtaskpanes 中删除了自定义任务窗格list.But内存没有了released.I也把自定义任务处理掉了pane.But没什么happened.So,是我编码的问题,还是outlook的问题?我正在工作在 .net framework 3 上使用 winforms。5.The 每当我按下按钮时,outlook 占用的内存都会不断增加。

如果没有任何代码示例,很难判断是否发生了内存泄漏。请记住,分析托管内存可能很棘手...

但是,我的建议是您可能不应该手动处理 VSTO 任务窗格控件。如果用户单击隐藏任务窗格,则任务窗格不是 "destroyed",您不应该注销它。它的 Visible 属性 设置为 false。 请参阅下面我的 Startup.addin.cs 中的示例代码,它可以切换 TaskPane 可见性。

        public const string productName = "myMillionDollarAddin";
        private void RegisterTaskPane()
        {
            var tskControl = new TaskPaneControl();
            CustomTaskPane taskPane = this.CustomTaskPanes.Add(tskControl, productName);
            taskPane.Visible = true;
        }

        public void ShowHideTaskPane()
        {
            var taskPane = this.CustomTaskPanes.FirstOrDefault(ctp => ctp.Title == productName);
            if (taskPane == null)
            {
                RegisterTaskPane();
            }
            else
            {
                var visibility = taskPane.Visible;
                taskPane.Visible = !visibility;
            }
        }