C# Outlook加载项C夏普:While循环问题

C# Outlook加载项C夏普:While循环问题,c#,outlook,outlook-addin,C#,Outlook,Outlook Addin,我正在为Outlook编写一个快速的小插件,它将每隔x分钟检查我的电子邮件并处理邮件。这是我的第一个外接程序,所以我对运行时事件的顺序有点不确定,但我遇到的问题是,我在加载外接程序事件上使用了一个while循环和一个sleep,这会导致outlook永远无法完全打开 private void ThisAddIn_Startup(object sender, System.EventArgs e) { while (true) { CheckMail();

我正在为Outlook编写一个快速的小插件,它将每隔x分钟检查我的电子邮件并处理邮件。这是我的第一个外接程序,所以我对运行时事件的顺序有点不确定,但我遇到的问题是,我在加载外接程序事件上使用了一个while循环和一个sleep,这会导致outlook永远无法完全打开

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

是否有一种方法可以在执行此循环之前完全打开Outlook?

您可以尝试将其从提醒事件中挂起,而不是将其休眠。为此,请创建一个提醒。当它触发时,将调用此代码。然后可以抛出
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中设置常规事件,而不使用提醒来归档电子邮件,但这是我找到的唯一解决方案。

启动方法必须结束,因此您不能在其中设置无休止的循环。您可以在其中启动一个计时器,该计时器将每x次执行一次。看看谢谢你的提示,效果很好。