2011-08-18 40 views
0

我正在爲Outlook編寫一個快速加載項,它將每x分鐘檢查一次我的電子郵件並處理消息。這是我的第一個加載項,所以我對運行時事件的順序有點不確定,但是我遇到的問題是我在加載項加載事件中使用了一個帶有睡眠者的while循環,這會導致Outlook從未完全打開。Outlook加載項C Sharp:while循環問題

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
{ 
    while (true) 
    { 
     CheckMail(); 
     System.Threading.Thread.Sleep(100000); 
    } 
} 

有沒有一種方法可以在執行此循環之前完全打開Outlook?

+2

啓動方法_已結束,因此您無法在其中放置無限循環。你可以啓動一個定時器,每隔x次執行一次。看看http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx – Eddy

+0

感謝您的提示,這很好。 –

回答

2

您可以嘗試將它掛起提醒事件而不是睡覺。要做到這一點創建一個提醒。當它觸發時,這段代碼將被調用。你可以在那裏扔CheckMail();。這是在VBA中,因此您必須將其轉換。

Private Const REMINDER_SUBJECT As String = "CHECKEMAILREMINDER" 

Private Sub Application_Reminder(ByVal Item As Object) 
    Dim oTask As Outlook.TaskItem 
    If TypeOf Item Is Outlook.TaskItem Then 
     Set oTask = Item 

     If oTask.Subject = REMINDER_SUBJECT Then 

      oTask.ReminderTime = DateAdd("m", 1, Now) 
      oTask.Save 

     End If 
    End If 
End Sub 

我搜索了很長一段時間尋找一種方法來在Outlook規則事件,而爲了使用提醒我的存檔電子郵件,但是這是我發現的唯一的解決方案。

+0

謝謝,這是一個很好的解決方法。 –