展望2010 COM插件 - NewExplorer从不闪光 [英] Outlook 2010 Com addin - NewExplorer never fires

查看:186
本文介绍了展望2010 COM插件 - NewExplorer从不闪光的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

出于某种原因,在我的应用我FolderSwitch适用于与应用程序,但NewExplorer事件永远不会触发打开,如此明显的FolderSwitch事件将不会触发一个新的浏览器。Explorer主

我不能工作,为什么不会触发事件。

 私人列表< _Outlook.Explorer> ListOfExplorerWindows =新的List< _Outlook.Explorer> {};
私人_Outlook.Application应用;公共无效的OnConnection(对象应用程序,Extensibility.ext_ConnectMode ConnectMode,对象AddInInst,楼盘阵列定制)
{
    this.Application =(_Outlook.Application)申请书;
}公共无效OnStartupComplete(参考阵列定制)
{
    _Outlook.Explorer浏览= this.Application.ActiveExplorer();
    Explorer.FolderSwitch + =新_Outlook.ExplorerEvents_10_FolderSwitchEventHandler(Explorer_FolderSwitch);
    ListOfExplorerWindows.Add(资源管理器);    this.Application.Explorers.NewExplorer + =新_Outlook.ExplorersEvents_NewExplorerEventHandler(Explorers_NewExplorer);
}私人无效Explorers_NewExplorer(_Outlook.Explorer浏览器)
{
    Explorer.FolderSwitch + =新_Outlook.ExplorerEvents_10_FolderSwitchEventHandler(Explorer_FolderSwitch);
    ListOfExplorerWindows.Add(资源管理器);
}


解决方案

有关你想使用VSTO时保持周围的任何事件,您需要保持周围的类级成员( 资源管理器应用检查命令栏的),以保持GC线程从删除它们。这是一个资源优化,也可以是一个惨痛的教训中学习。

请参阅相关的<一个href=\"http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/2debdd37-daf0-4966-8e12-f5eec01849e0\">MSDN论坛发帖对事件一生或相似,所以帖子

For some reason in my app my FolderSwitch works on the main Explorer that opens with the application but the NewExplorer event never fires, so obviously the FolderSwitch event won't fire on a new Explorer.

I can't work out why the event doesn't fire.

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);
}

解决方案

For any events you want to keep around when using VSTO, you are required to keep around a class-level member (Explorer, Application, Inspector, CommandBar, etc.) to keep the GC Thread from removing them. This is a resource optimization, but can also be a painful lesson to learn.

See related MSDN Forum post regarding event lifetime or similar SO post.

这篇关于展望2010 COM插件 - NewExplorer从不闪光的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆