Приложение для удаления Outlook - PullRequest
1 голос
/ 08 мая 2020

Я использую Windows Forms, и я запускаю приложение Outlook, используя Interop Библиотеку как:

 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 Ответ

1 голос
/ 08 мая 2020

1. Создайте backgroundWorker

Создайте экземпляр backgroundWorker, добавив его через Toolbox под компонентами.

2. В конструкторе формы

Поместите только что добавленный экземпляр backgroundWorker в конструктор класса формы:

public Form1()
{
    InitializeComponent();

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

3. RunWorkAsyn c

Добавьте метод RunWorkerAsyn c через экземпляр backgroundWorker в событие button_click для кнопки, которая должна открывать окно Outlook:

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

4. Открытие окна Outlook

Добавьте ранее написанный код для создания экземпляра окна Outlook в событии DoWork для backgroundWorker:

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);
}

Теперь вы можете sh любую кнопку или выполнить дополнительные действия в форме после открытия окна Outlook.

Надеюсь, это помогло вам достичь вашей цели.

Источники

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