我继承了一个具有很长项目列表的应用程序。使用线程加速进程
这花了几个小时循环,所以我想我可以通过运行线程来优化它。
例如:
foreach (var d in data)
{
try
{
// do alot of logic, takes time
}
catch (Exception e)
{
// catch error
}
}
我以为我可以通过优化它:
foreach (var d in data)
{
try
{
ExecutionMethodThread(d);
}
catch (Exception e)
{
}
}
private void ExecutionMethodThread(data d)
{
Thread thread = new Thread(() => MethodThread(d));
thread.Start();
thread.Join();
}
虽然当我设置在foreach循环断点我还注意到,等待每个项目完成然后再进行下一步。 这显然不是我想要的,因为我希望这个列表能够通过循环运行 ,并且我将拥有多个项目,并拥有自己的线程simultaniosly。
我该如何做到这一点?
澄清:
循环开始
项目一启动一个线程和executs逻辑
项目不二的项目一个等待,都有自己的线程和executs 逻辑等
'Parallel.ForEach'。小心你的逻辑必须是线程安全的。 –
它不是多线程的,因为对于你处理的数据中的每一项,你都要等待它完成计算'加入',所以你永远不会同时计算多个项目 – litelite
@litelite有没有办法绕过? –