【发布时间】:2014-03-04 14:47:08
【问题描述】:
我是 C# 中使用线程的新手,即使我一直在阅读漏洞日,我也无法解决这个问题:
我有一个使用框架 4.5 发送电子邮件的控制台应用程序,问题是即使我使用的是 Task.Factory.StartNew,该应用程序似乎是按顺序运行线程而不是并行运行。
谁能给我一些建议?
注意: queuedEmails 包含最多 70 个电子邮件列表
代码:
public void Send()
{
IList<Task> tasks = new List<Task>();
List<string> logLines = new List<string>();
foreach (EmailEnt emailEnt in queuedEmails)
{
string subject = "I'm the subject";
string cuerpo_email = "I'm the email body";
tasks.Add(Task.Factory.StartNew(() =>
{
DownloadHtml("http://www.google.com");
Console.Out.WriteLine("done"+DateTime.Now.TimeOfDay);
}));
}
Task.WaitAll(tasks.ToArray());
}
public static string DownloadHtml(string Url)
{
// Open a connection
HttpWebRequest WebRequestObject = (HttpWebRequest)HttpWebRequest.Create(Url);
// You can also specify additional header values like
// the user agent or the referer:
WebRequestObject.UserAgent = ".NET Framework/2.0";
WebRequestObject.Referer = "http://www.example.com/";
// Request response:
WebResponse Response = WebRequestObject.GetResponse();
// Open data stream:
System.IO.Stream WebStream = Response.GetResponseStream();
// Create reader object:
System.IO.StreamReader Reader = new System.IO.StreamReader(WebStream);
// Read the entire stream content:
string PageContent = Reader.ReadToEnd();
// Cleanup
Reader.Close();
WebStream.Close();
Response.Close();
return PageContent;
}
【问题讨论】:
-
您正在重用一个名为
email的字段。那是什么类型的? -
是我自己的班级来发送电子邮件
-
那么把代码贴出来才有意义,否则很难给你可靠的建议!
-
我已经更新了代码
标签: c# multithreading task