title: How to implement Async Command
body: <p>Although I have understood async programming with c# somehow, still don't get why async with void is not the better solution, then when I want to improve my Xamarin Forms code I found many MVVM framework use AsyncCommand to avoid void with async &quot;unlike events&quot; like following:</p>
  <pre><code>public class AsyncCommand : Command {
      public AsyncCommand(Func&lt;Task&gt; execute) : base(() =&gt; execute()) { }
      public AsyncCommand(Func&lt;object, Task&gt; execute) : base((arg) =&gt; execute(arg)) { }
  }
  </code></pre>
  <p>But I don't know why async if command itself not async and what about use an async command with action and run a task like that:</p>
  <pre><code>public AsyncCommand(Action execute) : this(() =&gt; Task.Run(execute))
  public AsyncCommand(Action&lt;object&gt; execute) : this((arg) =&gt; Task.Run(() =&gt; execute(arg)))
  </code></pre>