为什么异常System.Threading.Tasks.TaskCanceledException?

时间:2015-11-11 10:02:24

标签: c# multithreading asynchronous xamarin task-parallel-library

我正在构建一个xamarin android应用程序但不能使用async await。

执行被卡住了很长时间,然后最终抛出异常消息: System.Threading.Tasks.TaskCanceledException:任务被取消

首先我认为它会被卡住,因为我不使用ConfigureAwait(false),但使用它并不能解决任何问题。

代码:

    self.collide_up = False
    self.collide_down = False
    self.collide_left = False
    self.collide_right = False
    self.collide_list = [self.collide_up, self.collide_down, self.collide_left, self.collide_right]

堆栈跟踪:

protected override async void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);
    await ProcessData().ConfigureAwait(false); 
}

private async Task ProcessData()
{
    await Task.Delay(new TimeSpan(0, 0, 2)).ConfigureAwait(false); // 2 seconds
}

1 个答案:

答案 0 :(得分:1)

您可以将其添加到您的代码中,然后将该消息作为评论说明。

try 
{
    await Task.Delay(new TimeSpan(0, 0, 2)).ConfigureAwait(false);
}
catch (System.Threading.Tasks.TaskCanceledException ex)
{
    MessageBox.Show(ex.Message);
}

在catch循环中,只要您能够查看错误消息,就可以使用任何想要处理错误消息的方法。 此外,将所有这些放入try和catch循环中是值得的,这样您就可以检查哪个部分出现错误。