Вызов браузера 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>
у вас есть два варианта
Не жду задачу:
public ICommand OpenWebPageCmd => new Command<string>((url) => { Browser.OpenAsync(new Uri(url), BrowserLaunchMode.SystemPreferred); });
Используйте лучшую команду делегата, которая поддерживает асинхронные функции. Как и AsyncCommand из пакета NuGet Nito.Mvvm.Async, написанный Stephen Cleary.
Для получения дополнительной информации прочитайте принятый ответ здесь