同时执行多个方法

时间:2014-11-24 17:03:16

标签: c# asp.net parallel-processing task

我有几种方法彼此独立,我很好奇,这是同时执行它们的最佳方式。我在下面尝试了这些方法,并为每个方法计时,整个时间似乎是相同的,所以我不确定我做错了什么......?

此外,这是一个Web应用程序,在用户单击按钮后调用这些方法。 C#,aspx

method1(var1, var2, var3);  // takes 5 seconds to run
method2(var1, var2, var3);  // takes about 1-2 seconds to run

初审:

//Entered my methods one right after another
method1(var1, var2, var3);
method2(var1, var2, var3);
//timed the execution and overall took ~5-6 seconds to run and display results

第二次试验:

//used Google and found something called Parallel
Parallel.Invoke(() =>
{
   method1(var1, var2, var3);
},
() =>
{
   method2(var1, var2, var3);
});
//~5-6 seconds to run and display results

第三次审判:

//used Google and found something called Tasks
Task task1 = Task.Factory.StartNew(() => method1(var1, var2, var3));
Task task2 = Task.Factory.StartNew(() => method2(var1, var2, var3));
Task.WaitAll(task1, task2);
//~5-6 seconds to run and display results

第四次试验(类似于第三次试验):

//used Google and found something called Tasks
Task[] tasks = new Task[2]
{
   Task.Factory.StartNew(() => method1(var1, var2, var3)),
   Task.Factory.StartNew(() => method2(var1, var2, var3))
};
Task.WaitAll(tasks);
//~5-6 seconds to run and display results

非常感谢任何建议或帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

你的第3和第4次测试完全相同。你的第二次测试在功能上等同于其他两次。

您的方法应该并行运行(即使有no guarantees)。

尽管如此,您似乎没有以任何有意义的精确度计算这些测试的时间。尝试在开始和结束时从这些方法中打印消息,我确信您会在method2完成之前看到method1开始。