我正在开发一个outlook插件。我在outlook工具栏中添加了一个按钮,当用户点击该按钮时,会调用一个web服务。根据该webservice的结果,在自定义任务窗格中加载一个usercontrol。当一个用户关闭自定义任务窗格,我在用户控件上调用dispose方法。我还将此用户控件的子控件放置在其处置事件中,并从customtaskpanes列表中删除自定义任务窗格。但是内存未释放.I也没有发生任何事情。所以,这是我的编码问题,还是Outlook的问题?我正在使用.net框架3.5上的winforms。每当我使用外观的内存一直在增加按下按钮。
答案 0 :(得分:1)
如果没有任何代码示例,很难判断是否发生内存泄漏。请记住,分析托管内存可能很棘手......
但是,我的建议是您可能不应手动处置VSTO任务窗格控件。如果用户单击隐藏任务窗格,则任务窗格不会被销毁"你不应该注销它。其可见属性设置为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;
}
}