日期:2014-05-18 浏览次数:21149 次
Thread[] MyThread = new Thread[ReportExecuter.Length];
for (int i = 0; i < ReportExecuter.Length; i++)
{
MyThread[i] = new Thread(ThreadMethod);
MyThread[i].Name = i.ToString();
MyThread[i].IsBackground = true;
MyThread[i].Start();
MyThread[i].Join();
}
Thread[] MyThread = new Thread[ReportExecuter.Length];
for (int i = 0; i < ReportExecuter.Length; i++)
{
MyThread[i] = new Thread(ThreadMethod);
MyThread[i].Name = i.ToString();
MyThread[i].Start();
}
------解决方案--------------------
把 MyThread[i].Join();去掉
------解决方案--------------------
+1
Thread[] MyThread = new Thread[ReportExecuter.Length];
for (int i = 0; i < ReportExecuter.Length; i++)
{
MyThread[i] = new Thread(ThreadMethod);
MyThread[i].Name = i.ToString();
MyThread[i].IsBackground = true;
MyThread[i].Start();
}
for (int i = 0; i < ReportExecuter.Length; i++)
{
MyThread[i].Join(); //<--
}
------解决方案--------------------
AutoResetEvent / ManualResetEvent 试试看
------解决方案--------------------
你的 ThreadMethod 没有针对多线程进行设计继续用单线程一样的,
你怎么能指望电脑会那么智能的帮你把串行算法转成并行。。
Threading 是允许你在多个线程上执行,但不可能帮你完成并行算法,耗时一样一点都不意外
------解决方案--------------------
哦,说耗时嘛,你倒说对了。有些情况下用多线程或许耗时还会多一点呢。也就是说得分情况决定是否用多线程。本身工作时间不很长的,你要分线程,开线程还要占用时间呢。所以要科学合理的运用多线程。