c# - 在 Windows 8.1 中使用搜索框时如何优雅地处理 TaskCanceledException

标签 c# winrt-xaml windows-8.1 winrt-async win-universal-app

我正在使用一个搜索框,我将在其中加载一个名称列表。

我的代码在后面

private async void SearchBox_SuggestionsRequested(SearchBox sender, SearchBoxSuggestionsRequestedEventArgs args)
    {
        if (string.IsNullOrEmpty(args.QueryText))
        {
            return;
        }
        var collection = args.Request.SearchSuggestionCollection;
        if(oldquery != args.QueryText && args.Request.IsCanceled == false)
        {
            var deferral = args.Request.GetDeferral();
            try
            {
                oldquery = args.QueryText;

                var listOfBanks = await addFIPageViewModel.GetBanksOnQuery();

                foreach (Institution eachBank in listOfBanks)
                {
                    collection.AppendQuerySuggestion(eachBank.Name);
                }
            }

            //JUST Logging and ignoring. Can I handle it in a better way
            catch(Exception e)
            {
                Debug.WriteLine(e.StackTrace);
            }
            finally
            {
                deferral.Complete();
            }

        }
    }

“System.Threading.Tasks.TaskCanceledException”类型的异常 任务已取消。发生在行中

var listOfBanks = await addFIPageViewModel.GetBanksOnQuery();

如您所见,我只是忽略了这一点。

有没有更好的方法来处理这个问题?

我无法确定此问题的根本原因。有人可以指导这是否是在 SearchSuggestionRequested 中调用异步方法的正确方法。

最佳答案

我觉得你的代码没问题。我会明确捕获 TaskCanceledException,以确保我不会无意中忽略其他异常。

try
{
    // like above 
}
catch(TaskCanceledException e)
{
    Debug.WriteLine("Task cancelled: " + e.Message);
}
finally
{
    deferral.Complete();
}

关于c# - 在 Windows 8.1 中使用搜索框时如何优雅地处理 TaskCanceledException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24438192/

相关文章:

c# - 正则表达式查找未被字符包围的连字符

windows - 组合框更改突出显示颜色 winRT(地铁应用程序)

windows - Windows 8 商店应用程序设置栏中的按钮样式

windows-8 - Windows 应用商店应用程序 : Change the icon of an AppBar Button?

visual-studio-2012 - Windows 8.1 Pro VS 2012 上的 F# 编译错误

powershell - 我不知道为什么找不到该小组的成员

c# - 使用通用方法获取我的枚举属性的 List<string>

c# - 值不能为空。参数名称 : context when trying to resolve a class

c# - .NET Core 中HttpContext TraceIdentifier 是如何生成的?

css - 如何防止图像在 Windows RT WebView 中变为 "draggable"