В Xamarin.iOS / Monotouch это сработало для меня:
private async Task ShowToast(string message, UIAlertView toast = null)
{
if (null == toast)
{
toast = new UIAlertView(null, message, null, null, null);
toast.Show();
await Task.Delay(2000);
await ShowToast(message, toast);
return;
}
UIView.BeginAnimations("");
toast.Alpha = 0;
UIView.CommitAnimations();
toast.DismissWithClickedButtonIndex(0, true);
}
Помните, что если асинхронный метод вызывается из фонового потока (а не из основного потока пользовательского интерфейса), то InvokeOnMainThread все равно потребуется
Это просто означает, что вы вызываете вышеуказанный метод следующим образом:
BeginInvokeOnMainThread(() =>
{
ShowToast(message);
});