您可以使用任务从工作线程产生处理电子邮件。
如果这是锤击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
}
我已经走了类似的东西,但使用Windows任务计划程序和连接到我的数据库的控制台应用程序。你的答案是最接近的,所以我会接受你的答案。 – Marko 2010-11-14 20:51:35