2011-08-18 76 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

谢谢,这是一个很好的解决方法。 –