Search code examples
c#asynchronoustasktask-parallel-library

How to run list of Tasks that return different data types by using Task.WhenAll


so i have two methods that are returning different data types. i want to run them at the same time. and get result from both of them.

public async Task<int> Ta1()
{
   await Task.Delay(100);
   return 100;
}

public async Task<string> Ta2()
{
   await Task.Delay(200);
   return "hello";
}

and main function where a create list of tasks and call it via Task.WhenAll

var tasks = new List<Task>();
tasks.Add(Ta1());
tasks.Add(Ta2());

await Task.WhenAll(tasks);
            
var a1= //get value from Ta1;
var a2 = //get value from Ta2;

Solution

  • You can do it like this

    
    var tasks = new List<Task>();
    var ta1 = Ta1();
    var ta2 = Ta2();
    tasks.Add(ta1);
    tasks.Add(ta2);
    
    await Task.WhenAll(tasks);
    
    var a1 = ta1.Result;//get value from Tel1;
    var a2 = ta2.Result;//get value from Tel2;