gpt4 book ai didi

c# - Outlook VSTO 未触发 NewMailEx 事件?

转载 作者:行者123 更新时间:2023-11-30 22:51:04 28 4
gpt4 key购买 nike

我在 C# 中创建了一个 VSTO,它应该 Hook Outlook 2007 的 NewMailEx 事件。但是,当我手动发送/接收时,或者当收件箱中只有 1 封未读邮件时,它有时不会触发。看起来好像它在消息实际到达之前就在收件箱上触发了。

除了使用 VSTO 的 ItemAdd 或 NewMailEX 之外,是否有更好的每次监视新邮件的方法?

最佳答案

原因是:“GC 收集 .NET 对象,whichc wrapps 来自 Outlook 的 COM 对象)”。解决方案是保留对此 .NET 对象的引用。最简单的方法是:

// this is helper collection.
// there are all wrapper objects
// , which should not be collected by GC
private List<object> holdedObjects = new List<object>();

// hooks necesary events
void HookEvents() {
// finds button in commandbars
CommandBarButton btnSomeButton = FindCommandBarButton( "MyButton ");
// hooks "Click" event
btnSomeButton.Click += btnSomeButton_Click;
// add "btnSomeButton" object to collection and
// and prevent themfrom collecting by GC
holdedObjects.Add( btnSomeButton );
}

如果需要,您还可以为这个(和其他)具体按钮(或其他对象)设置一个特殊字段。但这是最常见的解决方案。

关于c# - Outlook VSTO 未触发 NewMailEx 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/202212/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com