给出异步方法“匿名”的Xamarin Essentials浏览器调用不应返回void

时间:2019-04-09 09:26:44

标签: c# xamarin xamarin.forms xamarin.essentials

我更新了Visual Studio,现在收到很多这样的消息:

public ICommand OpenWebPageCmd => new Command<string>(async (url) =>
{
   await Browser.OpenAsync(new Uri(url), BrowserLaunchMode.SystemPreferred);
});
  

异步方法“匿名”不应返回void

我看到了一些其他并非特定于此扩展程序的答案。使用浏览器选项打开新页面时,有什么方法可以解决此问题?

1 个答案:

答案 0 :(得分:0)

答案here解释

  

异步等待仅与Func<Task>Func<Task<T>>兼容,如果您没有,那么您将拥有不应被视为的“异步无效”。

由于Browser.OpenAsync返回Task而不是Func<Task>,因此您有两个选择

  1. 不等待任务:

     public ICommand OpenWebPageCmd => new Command<string>((url) =>
     {
      Browser.OpenAsync(new Uri(url), BrowserLaunchMode.SystemPreferred);
     });
    
  2. 使用支持异步功能的更好的委托命令。类似于Nito.Mvvm.Async编写的Stephen Cleary NuGet包中的AsyncCommand。

有关更多信息,请阅读接受的答案here