C# - как запустить 5 задач параллельно
Всем Привет,
Я использую приведенный ниже код для параллельного вызова 5 методов, а затем жду ответа от всех методов, прежде чем продолжить работу.
Task<string> t1 = Task<string>.Factory.StartNew(() => LookUp1(lookUpObj)); //09:28:41.594538 Task<string> t2 = Task<string>.Factory.StartNew(() => LookUp2(lookUpObj)); //09:28:41.593538 Task<string> t3 = Task<string>.Factory.StartNew(() => LookUp3(lookUpObj)); //09:28:41.593538 Task<string> t4 = Task<string>.Factory.StartNew(() => LookUp4(lookUpObj)); //09:28:41.594538 Task<string> t5 = Task<string>.Factory.StartNew(() => LookUp5(lookUpObj)); //09:28:42.621597 Task.WaitAll(t1, t2, t3, t4, t5);
Я вставил несколько операторов журнала, чтобы подтвердить, вызываются ли эти методы параллельно или нет. Первые 4 метода вызываются параллельно с разницей во времени около 100 миллисекунд, но последний (5-й) метод вызывается после полной 1 секунды по сравнению с другими. Я привел пример времени вызова в комментариях выше.
Пожалуйста, дайте мне знать, что я делаю неправильно или есть ли какие-либо ограничения на количество параллельных вызовов или предложите какой-либо способ добиться этого. Заранее спасибо.
Спасибо,
Акаш Кансал.
Что я уже пробовал:
Parallel.Invoke(() => { r1 = Iteration1LookUp(lookUpObj); }, () => { r2 = Iteration2LookUp(lookUpObj); }, () => { r3 = Iteration3LookUp(lookUpObj); }, () => { r4 = Iteration4LookUp1(lookUpObj); }, () => { r5 = Iteration4LookUp2(lookUpObj); });
Попробовал это сделать, но результат тот же самый.