在outlook插件的自定义任务窗格中打开的用户控件没有';关闭窗格时无法处理
本文关键字:处理 用户 任务 自定义 插件 outlook 控件 | 更新日期: 2023-09-27 18:27:16
我正在开发一个outlook插件。我在outlook工具栏中添加了一个按钮,当用户单击该按钮时,就会调用Web服务。根据该Web服务的结果,用户控件将加载到自定义任务窗格中。当用户关闭自定义任务窗格时,我会调用用户控件上的dispose方法。我还在其disposed事件中处理此用户控件的子控件,并从customtaskpanels列表中删除了自定义任务窗格。但记忆并没有被释放。我还处理了自定义任务窗格。但什么也没发生。那么,这是我的编码问题,还是前景问题?我在.net框架3.5上使用winforms。每当我按下按钮时,outlook占用的内存就会不断增加。
如果没有任何代码样本,很难判断是否发生内存泄漏。请记住,分析托管内存可能很棘手。。。
但是,我的建议是,您可能不应该手动处理VSTO任务窗格控件。如果用户单击隐藏任务窗格,则任务窗格不会被"销毁",您不应注销它。它的Visible属性设置为false
。请参阅下面Startup.addin.cs中的示例代码,该代码可用于切换任务窗格的可见性。
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;
}
}