I\'m new to C#
s await/async
and currently playing around a bit.
In my scenario I have a simple client-object which has a WebRequest
How should the method be started?
I vote for "none of the above". :)
"Fire and forget" is a difficult scenario to handle correctly. In particular, error handling is always problematic. In this case, async void
may surprise you.
I prefer to explicitly save the tasks if I'm not await
ing them immediately:
private async Task SendAliveMessageAsync();
public Task KeepaliveTask { get; private set; }
public Client()
{
...
KeepaliveTask = SendAliveMessageAsync();
}
This at least allows the consumers of Client
to detect and recover from exceptions thrown by the SendAliveMessageAsync
method.
On a side note, this pattern is almost equivalent to my "asynchronous initialization" pattern.