最近、 Outlook 2007のイベント処理で、Exchange 接続が失われた後に回復したときにイベントがトリガーされないという問題があることに気付きました。イベントにリスナーをアタッチすると、Folder.Items.ItemAdd
Exchange がオフラインからオンラインに切り替わった後、イベントが切断されます。これを再現するために、イーサネット ケーブルを外したり外したりして、短い接続損失をシミュレートしました。
これにより、Exchange 接続が停止したときにイベントがトリガーされることを保証できない場合、プラグインの構築が本当に困難になります。これは、リモート オフィスから操作している場合に特に一般的です。キャッシュ交換モードは使用していません。
回避策であるかどうか、またはイベント リスナーをいつ再確立する必要があるかを知る方法について、フィードバックはありますか? Exchange キャッシュ モードを使用することは解決策ですか? または、確実に使用できない特定のイベントがありますか?
Exchange 接続が失われたときのイベント トリガーはないようです。おそらく、ここでの唯一の回避策は、信頼できるイベント動作のためにある種のタイマーを使用することです。
public partial class ThisAddIn
{
Outlook.Items sentItems;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Outlook.Folder sentFolder = ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
sentItems = sentFolder.Items;
sentItems.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(SentItems_ItemAdd);
}
void SentItems_ItemAdd(object Item)
{ // breakpoint never hit after Exchange connectivity is lost
Outlook.MailItem mailItem = Item as Outlook.MailItem;
}
}