C# Xamarin.Forms System.Threading.Tasks.TaskCanceledException

C# Xamarin.Forms System.Threading.Tasks.TaskCanceledException,c#,multithreading,azure,xamarin.forms,C#,Multithreading,Azure,Xamarin.forms,我们在生产中有一个Xamarin.Forms应用程序。在我们的测试阶段,我们没有遇到这样的问题。然而,在这方面,我们遇到了一些崩溃问题。例如,一个崩溃问题如下所示 A task was canceled. 1 TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) 2 TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.

我们在生产中有一个Xamarin.Forms应用程序。在我们的测试阶段,我们没有遇到这样的问题。然而,在这方面,我们遇到了一些崩溃问题。例如,一个崩溃问题如下所示

A task was canceled.

1 TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task)
2 TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task)
3 TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task)
4 TaskAwaiter`1[TResult].GetResult ()
5 HttpClientHandler+<SendAsync>d__63.MoveNext ()
6 ExceptionDispatchInfo.Throw ()
...
17 RequestBuilderImplementation+<buildCancellableTaskFuncForMethod>c__AnonStoreyA`1+<buildCancellableTaskFuncForMethod>c__async9[T].MoveNext ()
18 ExceptionDispatchInfo.Throw ()
23 APIClient+<Portfolio>d__6.MoveNext ()
24 ExceptionDispatchInfo.Throw ()
29 PortfolioPage+<LoadPortfolio>d__3.MoveNext ()
30 ExceptionDispatchInfo.Throw ()
任务已取消。
1 TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task任务)
2 TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task任务)
3 TaskAwaiter.ValidateEnd(System.Threading.Tasks.Task任务)
4 TaskAwaiter`1[TResult].GetResult()
5 HttpClientHandler+d_u63.MoveNext()
6例外DispatchInfo.Throw()
...
17 RequestBuilderImplementation+c_uAnonStoreya`1+c_uAsync9[T].MoveNext()
18例外DispatchInfo.Throw()
23 APIClient+d_u6.MoveNext()
24例外DispatchInfo.Throw()
29 PortfolioPage+d_u3.移动下一个()
30例外DispatchInfo.Throw()
在标题部分显示,System.Threading.Tasks.TaskCanceledException

我有一个名为PortfolioPage的页面和一个名为LoadPortfolio的方法。这是方法

async void LoadPortfolio()
{
    try
    {
        APIResponse.Portfolio portfolio = await new APIClient().Portfolio(selectedDate);
        MessagingCenter.Send<PortfolioPage, APIResponse.Portfolio>(this, "LoadedPortfolio", portfolio);
    }
    catch (ApiException e)
    {
        Debug.WriteLine(e.Message);
        if (e.StatusCode == System.Net.HttpStatusCode.Unauthorized) UIUtil.gotoAuthenticate(this);
        else
            MessagingCenter.Send<PortfolioPage, APIResponse.Portfolio>(this, "LoadedPortfolio", null);
    }
}
async void LoadPortfolio()
{
尝试
{
APIResponse.Portfolio Portfolio=等待新的APIClient().Portfolio(selectedDate);
发送(这个“LoadedPortfolio”,portfolio);
}
捕获(APIE)
{
Debug.WriteLine(e.Message);
如果(e.StatusCode==System.Net.HttpStatusCode.Unauthorized)UIUtil.gotoAuthenticate(此);
其他的
发送(此为“LoadedPortfolio”,null);
}
}
我是Xamarin和C#的新手。不确定如何从此错误日志中提取信息以及如何解决TaskCanceledException问题。感谢您的帮助


提前谢谢

HttpClientHandler的功能与
System.Threading.Tasks中的任务类似库。这意味着当它收到取消请求,或者由于某些“预期”原因响应不成功时,它会抛出异常


我建议将请求包装在一个try/catch块中,并找出如何处理“ThrowForNonSuccess”异常。

当请求耗时过长且移动服务超时时,我看到了这一点。例如,如果我将数据库设置为从头开始重建以进行测试,并尝试在数据库完成初始化之前查询数据库,我通常会看到它。哎呀,这太令人沮丧了。只是花了几个小时试图弄清楚为什么我的取消公告搜索停止工作,而事实上这是搜索逻辑中的一个异常,而不是任务处理中的一个异常。这对我有帮助,谢谢!