タスクを使用して、電子メールを処理するためのワーカースレッドを生成できます。
これがCPUに負担をかけすぎている場合は、同時実行性を減らす新しいスケジューラを作成できます:http: //msdn.microsoft.com/en-us/library/ee789351.aspx
static void StartMailTasks(string[] addresses)
{
List<Task> tasks = new List<Task>();
foreach (var address in addresses)
{
tasks.Add(Task.Factory.StartNew(Email, address));
}
Task.Factory.ContinueWhenAll(tasks.ToArray(), AllDone, TaskContinuationOptions.OnlyOnRanToCompletion);
Task.Factory.ContinueWhenAny(tasks.ToArray(), ReportError, TaskContinuationOptions.OnlyOnFaulted);
}
static void AllDone(Task[] tasks)
{
// All is well
}
static void ReportError(Task errorTask)
{
// Log or report the error
}
static void Email(object state )
{
// send the e-mail
// Can throw error, if needed
}