title: Is it OK to have virtual async method on base class?
body: <p>I am working with some code, where I have 2 classes with very similar logic and code. I have <code>protected async void LoadDataAsync()</code> method on both classes.<br>
  Currently I am refactoring it and thinking to move shared logic to base class.<br>
  Is it OK to have <code>virtual async</code> method on base class and override it on derived classes?<br>
  Are there any issues with it?<br>
  My code looks like this:   </p>
  
  <pre><code>public class Base
  {
     protected virtual async void LoadDataAsync() {}
  }
  
  public class Derived : Base
  {
     protected override async void LoadDataAsync()
     {
         // awaiting something
     }
  }
  </code></pre>
  
  <p><a href="https://stackoverflow.com/questions/6274547/how-to-force-async-child-overrides-in-c-sharp-5-0">Similar (but not same)</a> question was already asked.</p>