Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 同时执行多个方法_C#_Asp.net_Parallel Processing_Task - Fatal编程技术网

C# 同时执行多个方法

C# 同时执行多个方法,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

我有两个相互独立的方法,我很好奇哪种方法是同时执行它们的最佳方法。我在下面尝试了这些方法,并对每一种方法进行了计时,整个时间似乎都是一样的,所以我不确定我是否做错了什么

此外,这是一个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

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

你的第三次和第四次测试做的事情完全相同。你的第二次测试在功能上等同于另外两次

您的方法应该并行运行,即使有


不过,您似乎并没有以任何有意义的精确性为这些测试计时。尝试从这些方法的开头和结尾打印消息,我相信您会看到method2在method1完成之前开始。

谢谢您提供的信息。我想我也希望看到method2在method1之前显示在屏幕上,因为它的执行时间更短。但最终的结果是,在我手动计数的5-6秒后,两个结果同时显示在屏幕上。@Jayarikahs您是在每个方法中分别打印这些结果吗?或者通过调用代码,在Task.WaitAll?之后,在每个方法中,我将数据绑定到它们自己的gridview,因此结果将来自每个单独的方法。此外,MS通常推荐Task.Run over Task.Factory.StartNew,除非您需要额外的复杂性,而您可能不需要。请参阅。@Jayarikahs绑定是否可能涉及任何类型的同步,例如锁定?这可能就是问题所在。如果你想得到更多的帮助,你必须发布一个