Outlook 处理应用程序

Outlook dispose application

我使用 Windows 表单并使用 Interop 库执行 Outlook 应用程序:

 Outlook.Application outlookApp = new Outlook.Application();
 Outlook.MailItem mailMessage = (Outlook.MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);

            mailMessage.Subject = "test@mail.us";
            mailMessage.HTMLBody = "test";
            mailMessage.Display(true);

要执行 Outlook,我使用 mailMessage.Display(true);,但是当我使用它时,我无法再使用我的应用程序,我的应用程序就死机了,但是当我关闭 Outlook 应用程序时,它又可以工作了。我怎样才能将 outlook 作为应用程序的依赖项来处理,以便同时使用我的应用程序和 outlook?。此致

1。创建一个 backgroundWorker

通过组件下的工具箱添加创建一个 backgroundWorker 实例。

2。在表单构造函数中

将新添加的backgroundWorker实例放在class:

形式的构造函数中
public Form1()
{
    InitializeComponent();

    outlookWorker.DoWork += new DoWorkEventHandler(outlookWorker_DoWork);
}

3。 RunWorkAsync

在应该打开 outlook 的按钮的 button_click 事件中通过 backgroundWorker 实例添加 RunWorkerAsync 方法 window:

private void button1_Click(object sender, EventArgs e)
{
    outlookWorker.RunWorkerAsync();
}

4。打开前景window

将之前编写的代码实例化 outlook window 添加到 backgroundWorker 的 DoWork 事件中:

private void outlookWorker_DoWork(object sender, DoWorkEventArgs e)
{
    Outlook.Application outlookApp = new Outlook.Application();
    Outlook.MailItem mailMessage = (Outlook.MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);

    mailMessage.Subject = "test@mail.us";
    mailMessage.HTMLBody = "test";
    mailMessage.Display(true);
}

现在您可以在打开 outlook 后按任何按钮或在表单上执行辅助操作 window。

我希望这能帮助你实现你的目标。

来源

  1. https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.backgroundworker?view=netcore-3.1