送信者に知らせるために、以前に複数のOutlookウィンドウを開き、ticuloとメール本文を開く必要があります。私はいくつかのウィンドウを開く必要があります(私はいくつのウィンドウを知るためにグリッドを歩いています)。 スレッドでこれを実行しようとしていますが、ダイアログボックスが開いているためにOutlookがこれを行うことができないというエラーメッセージが表示されます。それを閉じて、どのように競合する複数のウィンドウを開くには、「もう一度 を試してみてください!複数のOutlookウィンドウを開くC#
テストコール
private void button2_Click(object sender, EventArgs e)
{
int qtdEventos = dgvDescEvento.RowCount;
Thread[] Threads = new Thread[qtdEventos];
try
{
cEmail testeEmail = new cEmail();
for (int i = 0; i < qtdEventos; i++)
{
Threads[i] = new Thread(new ThreadStart(new cEmail().Monta));
}
foreach (Thread t in Threads)
{
t.Start();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
クラス
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace NavEventos.Class
{
class cEmail
{
private Outlook.Application outlookApp;
public cEmail()
{
outlookApp = new Outlook.Application();
}
public void Monta()
{
string pTitulo = "Title";
string pAssunto = "Body test";
Outlook._MailItem oMailItem = (Outlook._MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);
Outlook.Inspector oInspector = oMailItem.GetInspector;
Outlook.Recipients oRecips = (Outlook.Recipients)oMailItem.Recipients;
#region MONTA ASSUNTO
oMailItem.Subject = pTitulo;
#endregion
#region MONTA CORPO DO E-MAIL
oMailItem.Body = pAssunto;
#endregion
oMailItem.Display(true);
}
}
}
私はこれをメソッド内の "Lock"を使って解決し、スレッドを普通に呼び出します。これにより、一度に1つのウィンドウしか開きません。 –