I have few async REST services which are not dependent on each other. That is while "awaiting" a response from Service1, I can call Service2, Service3 and so on.
For example, refer below code:
var service1Response = await HttpService1Async();
var service2Response = await HttpService2Async();
// Use service1Response and service2Response
Now, service2Response
is not dependent on service1Response
and they can be fetched independently. Hence, there is no need for me to await response of first service to call the second service.
I do not think I can use Parallel.ForEach
here since it is not CPU bound operation.
In order to call these two operations in parallel, can I call use Task.WhenAll
? One issue I see using Task.WhenAll
is that it does not return results. To fetch the result can I call task.Result
after calling Task.WhenAll
, since all tasks are already completed and all I need to fetch us response?
Sample Code:
var task1 = HttpService1Async();
var task2 = HttpService2Async();
await Task.WhenAll(task1, task2)
var result1 = task1.Result;
var result2 = task2.Result;
// Use result1 and result2
Is this code better than the first one in terms of performance? Any other approach I can use?