Вызов браузера Xamarin Essentials с асинхронным методом "Аноним" не должен возвращать void

Я обновил Visual Studio, и теперь я получаю много сообщений, подобных этому:

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

Асинхронный метод 'Anonymous' не должен возвращать void

Я видел некоторые другие ответы, которые не были характерны для этого расширения. Можно ли как-то решить эту проблему при использовании опции "Браузер" для открытия новой страницы?

1 ответ

Как ответ здесь объясняет, что

Асинхронное ожидание совместимо только с 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. Используйте лучшую команду делегата, которая поддерживает асинхронные функции. Как и AsyncCommand из пакета NuGet Nito.Mvvm.Async, написанный Stephen Cleary.

Для получения дополнительной информации прочитайте принятый ответ здесь

Другие вопросы по тегам