I have a scenario where in My .Net Standard project,I have a api
public async Task SendMessageAsync(){
await _service1.SendmessageToRestServiceAsync(); - calls a rest service
await _service2.SendMessageToKafkaAsync(); - calls a kakfaclient
}
The SDK users are using this service concurrently like 100,1000 times and reporting performance issues.
var tasks = Enumerable.Range(1, 100).Select(i =>SendMessageAsync());
await Task.WhenAll(tasks);
I want to run
await _service1.SendMessage();
in a way so that if even there is an exception it shouldn't stop
await _service2.SendMessage();
As this call is mandatory always and shouldn't be affetced. All the concurrent Requests made for await _service1.Sendmessage(); should be run on a background thread or a different thread so that the performance is not affected.
I did check the ThreadPool.QueueWorkItem which accepts a delegate but it is return type is void.
Is there a way to run all the calls to await _service1.Sendmessage(); in a background.The order of execution is not important.
The documentation in the link says " Creates a task that will complete when all of the supplied tasks have completed." the SendMessageAsync is already called inside a whenall. My question is there a way, the call to SendmessageToRestServiceAsync can be independent of other task @PeterDuniho –
await Task.WhenAll(_service1.Sendmessage(), _servic2.Sendmessage());?await Task.WhenAll(...). See duplicates. The discussion of performance does not seem relevant to the question you're asking. How you wait for an asynchronous result has nothing to do with how that asynchronous result is produced. Changing how you wait won't have any effect on the performance. If you need help with performance, a) do some research, then if you still need help b) post a new question that includes a minimal reproducible example that demonstrates your problem, explain what you've tried to fix it, and what specifically you need help with.