C# 同时执行多个方法
我有两个相互独立的方法,我很好奇哪种方法是同时执行它们的最佳方法。我在下面尝试了这些方法,并对每一种方法进行了计时,整个时间似乎都是一样的,所以我不确定我是否做错了什么 此外,这是一个web应用程序,在用户单击按钮后调用这些方法。C、 aspxC# 同时执行多个方法,c#,asp.net,parallel-processing,task,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 初审: //Ente
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
非常感谢您的任何建议或帮助。谢谢 你的第三次和第四次测试做的事情完全相同。你的第二次测试在功能上等同于另外两次 您的方法应该并行运行,即使有
不过,您似乎并没有以任何有意义的精确性为这些测试计时。尝试从这些方法的开头和结尾打印消息,我相信您会看到method2在method1完成之前开始。谢谢您提供的信息。我想我也希望看到method2在method1之前显示在屏幕上,因为它的执行时间更短。但最终的结果是,在我手动计数的5-6秒后,两个结果同时显示在屏幕上。@Jayarikahs您是在每个方法中分别打印这些结果吗?或者通过调用代码,在Task.WaitAll?之后,在每个方法中,我将数据绑定到它们自己的gridview,因此结果将来自每个单独的方法。此外,MS通常推荐Task.Run over Task.Factory.StartNew,除非您需要额外的复杂性,而您可能不需要。请参阅。@Jayarikahs绑定是否可能涉及任何类型的同步,例如锁定?这可能就是问题所在。如果你想得到更多的帮助,你必须发布一个