Неправильный вызов задачи asyn c в синхронной функции может вызвать проблемы c, поскольку он подавляет детали, если в задаче возникает исключение. Следовательно, важно правильно реализовать эту распространенную проблему.
Вы можете использовать FireAndForget
помощник, расположенный внутри вашей папки Helpers в TaskHelpers.cs, определенный следующим образом:
public static async void FireAndForgetSafeAsync(this Task task, Action<Exception> handleErrorAction = null)
{
try
{
await task.ConfigureAwait(true);
}
catch (Exception ex)
{
handleErrorAction?.Invoke(ex);
}
}
Затем вернитесь назад в своем конструкторе вы можете сделать это:
public MyTabbedPage()
{
vm1.LoadData().FireAndForgetSafeAsync(HandleErrorInternal);
vm2.LoadData().FireAndForgetSafeAsync(HandleErrorInternal);
vm3.LoadData().FireAndForgetSafeAsync(HandleErrorInternal);
ShowPage();
}
private void HandleErrorInternal(Exception ex)
{
DisplayAlertAsync("Error", ex.ToString(), "OK").FireAndForgetSafeAsync(HandleErrorInternal);
}