title: C# async void methods (asynchronous method '...' should not return void)
body: <p>I'm programming an iOS/Android app in Xamarin. At some points, I want to call asynchronous methods in the shared layer.
  Sometimes I call a method without awaiting it so other methods can be called. For example when values in the database should be updated (the shared layer handles read/write collisions). I do not care when the method call is finished and therefore I declare the method async void. Visual Studio now shows a warning "asynchronous method '...' should not return void". I know exactly that the method should not be awaited, so why shouldn't the method return void at that point?
  If I change the return type to task instead, I get warnings to consider using await for the method call which I don't want to.</p>
  
  <p>Another example is retrieving data from the database and updating the UI when the data becomes available. This time I await the method call to the shared layer but in an async void method in the UI class. I want the execution to continue while the data is retrieved, so why is it bad to have an async void method?</p>