Если DisplayAlert
действительно асинхронный , почему вы вообще запускаете поток? Вы можете объявить ваш обработчик событий async
и просто awiat ShowWarning
:
public async void btnAction_Click(object sender, System.EventArgs e)
{
await ShowWarning();
}
Возможно, вы захотите отключить btnAction
до await
и снова включить его после await
, чтобы избежать повторного события щелчка во время ожидания.
И обратите внимание, что объявлять ShowWarning
как async void
плохой практикой. Должно быть
private async Task ShowWarning()
{ ... }
(В случае обработчика события кнопки можно вернуть async void
, потому что в противном случае вы не могли бы присвоить его событию).
Если вам действительно нужно запустить ShowWarning
в другом потоке, вы можете использовать Task.Run()
:
public async void btnAction_Click(object sender, System.EventArgs e)
{
await Task.Run(ShowWarning);
}