私は別の壁にぶつかった。マルチスレッドとSMTPに関する以前の質問をここで確認してください
とにかく、実行時に動的にスレッドを作成してStart()メソッドを呼び出そうとしていますが、KeyNotFoundExceptionを受け取っています。これについての洞察をいただければ幸いです。私のコードがここから大きく外れている場合、基本的に私が達成したいのは、ユーザー入力(カウント)に従って個々のスレッドで実行される一意のSMTPインスタンスを作成し、各スレッドを同時に実行することです。
//count is user input (number of messages)
int instanceCount = 0;
var vartable = new Dictionary<string, SmtpClient>();
var vartable2 = new Dictionary<string, Thread>();
for (int i = 0; i < count; ++i)
{
vartable[instanceCount.ToString()] = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};
vartable2[instanceCount.ToString()] = new Thread(delegate()
{
using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})
{
{
((SmtpClient)vartable[instanceCount.ToString()]).Send(message);
}
}
});
instanceCount++;
}
そして、念のために、私は「0」を使用して動作するかどうかを確認しました
vartable2["0"].Start();