СА>2) Задача достаточно простая: есть метод, вызываемый веб-сервером. Внутри него надо параллельно запустить еще 10 методов, дождаться их завершения (но ждать не больше 10 секунд), после чего немного обработать результаты (паралеллизм тут уже не требуется) и выйти.
private int P1(){return 1;}
private bool P2(){return true;}
private void DoAll()
{
Task<int> task1 = Task.Factory.StartNew<int>(P1);
Task<bool> task2 = Task.Factory.StartNew<bool>(P2);
if (!Task.WaitAll(new Task[] { task1, task2 }, TimeSpan.FromSeconds(10)))
throw new Exception("Timeout");
int result1 = task1.Result;
bool result2 = task2.Result;
}