У меня есть несколько методов, которые независимы друг от друга, и мне было любопытно, что это лучший способ выполнить их в одно и то же время. Я пробовал эти способы ниже и приурочен к каждому, и время, похоже, одинаковое по всем направлениям, поэтому я не уверен, что я что-то делаю неправильно ...?Выполнение нескольких методов одновременно
Кроме того, это веб-приложение, и методы вызывается после того, как пользователь нажимает кнопку. 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» из-за более короткого времени, которое требуется для его выполнения. Но то, что в итоге происходит, - оба результата отображаются одновременно на экране после 5-6 секунд моего ручного подсчета. – Jayarikahs
@Jayarikahs Вы печатаете эти результаты из каждого метода индивидуально? Или из вызывающего кода, после 'Task.WaitAll'? – dcastro
В рамках каждого метода я привязываю данные к их собственному gridview, и поэтому результаты будут получены из каждого отдельного метода. – Jayarikahs