由于某些原因,在我的应用程序中,我的FolderSwitch在与应用程序一起打开的主资源管理器上工作,但NewExplorer事件从不触发,因此很明显,FolderSwitch事件不会在新的资源管理器上触发。
我搞不懂为什么事件不会触发。
private List<_Outlook.Explorer> ListOfExplorerWindows = new List<_Outlook.Explorer> { };
private _Outlook.Application Application;
public void OnConnection(object Application, Extensibility.ext_ConnectMode ConnectMode, object AddInInst, ref Array custom)
{
this.Application = (_Outlook.Application)Application;
}
public void OnStartupComplete(ref Array custom)
{
_Outlook.Explorer Explorer = this.Application.ActiveExplorer();
Explorer.FolderSwitch += new _Outlook.ExplorerEvents_10_FolderSwitchEventHandler(Explorer_FolderSwitch);
ListOfExplorerWindows.Add(Explorer);
this.Application.Explorers.NewExplorer += new _Outlook.ExplorersEvents_NewExplorerEventHandler(Explorers_NewExplorer);
}
private void Explorers_NewExplorer(_Outlook.Explorer Explorer)
{
Explorer.FolderSwitch += new _Outlook.ExplorerEvents_10_FolderSwitchEventHandler(Explorer_FolderSwitch);
ListOfExplorerWindows.Add(Explorer);
}发布于 2012-03-03 04:10:07
对于在使用VSTO时想要保留的任何事件,都需要保留一个类级成员(Explorer__、Application__、Inspector__、CommandBar__等)。以防止GC线程删除它们。这是一个资源优化,但也可能是一个痛苦的教训。
请参阅相关的MSDN Forum post regarding event lifetime或similar SO post。
https://stackoverflow.com/questions/9537330
复制相似问题