【问题标题】:How to handle TaskCanceledException?如何处理TaskCanceledException?
【发布时间】:2016-01-14 06:25:05
【问题描述】:

我有一个 xamarin 应用程序,它使用插件进行媒体访问以选择或拍照。

在我的中继命令中,我有这个:

try
{
    var mediaFile =
        await
            _mediaPicker.SelectPhotoAsync(new CameraMediaStorageOptions());

    using (var memoryStream = new MemoryStream())
    {
        mediaFile.Source.CopyTo(memoryStream);
        ...do image stuff here
    }
}
catch (TaskCanceledException taskCanceled)
{
    Debug.WriteLine(taskCanceled.Message);
}

一般来说有没有更好的方法来处理任务取消异常? SelectPhotoAsync 不采用取消令牌。在这里空渔获物可以吗?用户取消操作完全没问题。

谢谢。

【问题讨论】:

    标签: exception-handling xamarin task


    【解决方案1】:

    通常,您应该捕获OperationCanceledException 而不是TaskCanceledException。除此之外,您的方法看起来不错;处理异常的正确方法是捕获它。

    【讨论】:

    • 这是一个旧帖子,但只是为了澄清一下,在发现异常之后,是否应该进行任何进一步的操作?或者取消一项任务就意味着对获得的资源没有任何待遇?
    • @scharette:这取决于您的应用程序。通常,我构造我的代码,以便在捕获异常时,所有资源都已被清理。
    • 我明白了。感谢您的时间 !你的几篇文章确实帮助我理解了 c# 中的任务。
    • @scharette:一般我不推荐它,但取消例外是一个……例外。 :)
    • 哈哈!我真的很感谢您抽出宝贵的时间,我知道 Stack 与意见无关,但只有傻瓜才不会考虑经验丰富的意见。再次感谢斯蒂芬!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 2020-12-12
    • 2019-08-16
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    相关资源
    最近更新 更多