【发布时间】:2014-01-28 06:29:06
【问题描述】:
我的方法返回一个StringBuilder 并传入一个List<string> 的url。
我相信家长会等到孩子完成。
但似乎这个方法在完成之前就退出了,因为调用者有一个Messagebox 弹出窗口和我的Debug.WriteLine(count);仍在调试窗口中计数。
我的主要问题是:
结果 StringBuilder 对象没有像循环后那样附加太多。 StringBuilder 是否有可能通过使用 Task 被重置?
int count = 1;
StringBuilder result = new StringBuilder();
var parent = Task.Factory.StartNew(() =>
{
foreach (string url in pURI)
{
try
{
var child = Task.Factory.StartNew(() =>
{
using (HttpClient client = new HttpClient())
{
result.Append(client.GetStringAsync(url).Result.ToLower());
Debug.WriteLine(count);
count++;
}
}, TaskCreationOptions.AttachedToParent);
}
catch (Exception cancelException)
{
MessageBox.Show(cancelException.Message);
}
Debug.WriteLine(url.ToString());
}
});
parent.Wait();
return result;
【问题讨论】:
标签: c# .net concurrency task-parallel-library multitasking