我使用如下的Task,但没有性能提升.我检查了我的方法,该方法在0-1秒内执行但是使用任务(30个任务),需要5-12秒.如果我犯了任何错误,任何人都可以指导.我希望运行30个并行,并期望在最多2秒内完成30个.
这是我的代码:
Task[] tasks = new Task[30];
for (int p = 0; p <= dstable.Tables[0].Rows.Count - 1; p++)
{
MethodParameters newParameter = new MethodParameters();
newParameter.Name = dstable.Tables[0].Rows[p]["Name"].ToString();
tasks[p] = Task.Factory.StartNew(() => ParseUri(newParameter));
Application.DoEvents();
}
try
{
Task.WaitAll(tasks);
//Console.Write("task completed");
}
catch (AggregateException ae)
{
throw ae.Flatten();
}
Run Code Online (Sandbox Code Playgroud)
你的想法有一些重大问题.
请查看此链接 http://msdn.microsoft.com/en-us/library/ms810437.aspx
您可以使用TPL http://msdn.microsoft.com/en-us/library/dd460717.aspx
他们试图保证并行线程的最大效果.我也推荐这本书 http://www.amazon.com/The-Multiprocessor-Programming-Maurice-Herlihy/dp/0123705916
如果您真的想在2秒内解决问题,请购买更多CPU电量;)
| 归档时间: |
|
| 查看次数: |
1709 次 |
| 最近记录: |