Вызов браузера Xamarin Essentials с асинхронным методом «Аноним» не должен возвращать void - PullRequest
0 голосов
/ 09 апреля 2019

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

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

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

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

1 Ответ

0 голосов
/ 09 апреля 2019

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

async await совместим только с 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 из пакета Nito.Mvvm.Async NuGet, написанного Стивеном Клири .

Подробнее читайте в принятом ответе здесь

...