Outlook ItemAdd事件无法正常工作



我有一个很小的C#程序,它用ItemAdd事件监听outlook,每次启动程序,运行几天后就会出现故障,例如我周一启动程序,周四或周三会出现故障,然后必须重新启动
幕后发生了什么?如何修复?
这不应该是RAM问题吗?因为我有32G内存
Win10 21H1,Outlook 2016,.net框架4.7.2

=========================================

问题解决了,我放弃了COM方式处理,采用了MailKit,事情变得越来越清楚了。

public partial class Form2 : Form
{
private NameSpace _ns;
private readonly ApplicationClass _outlook = new ApplicationClass();
private readonly StringProcessor _processor = new StringProcessor();
private Items _items;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
try
{
Main();
}
catch (System.Exception ex)
{
}
}
private void Main()
{
try
{
_ns = _outlook.GetNamespace("MAPI");
MAPIFolder myFolder;
if (Environment.UserName == XmlService.UserName)
{
var box = XmlService.Inbox;
myFolder = GetFolderItem(box);
}
else
{
myFolder = _ns.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
}
if (myFolder != null)
{
_items = myFolder.Items;
_items.ItemAdd += Items_ItemAdd;
}
else
{
Loger.PrintLog("Can not get folder");
}
}
catch (System.Exception e)
{
Loger.PrintLog(e.Message);
}
}
private void Items_ItemAdd(object item)
{}
}

请记住,Outlook中基于文件夹的事件只是为UI目的而设计的。事件可以在重负载下丢弃;如果出现RPC故障,它们也可以断开连接,尤其是在联机(而不是缓存(模式下。

这些事件充其量应该是一个提示,表明处理新事件的代码需要尽早运行。

运行几天后,它将复功能

Outlook进程很可能已自动关闭。尝试使用Explorers.Add或Inspectors.Add方法创建Outlook窗口,该方法创建资源管理器或检查器窗口的新实例,并使它们在代码中保持活动状态,就像对Items集合所做的那样。请注意,如果不调用Display方法,任何Outlook UI都将不可见。

最新更新