【问题标题】:How to gracefully handle TaskCancelledException while using SearchBox in Windows 8.1在 Windows 8.1 中使用搜索框时如何优雅地处理 TaskCanceledException
【发布时间】:2015-04-06 04:11:30
【问题描述】:

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

我的代码在后面

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 中调用异步方法的正确方法,有人可以指导一下。

【问题讨论】:

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


    【解决方案1】:

    您的代码对我来说看起来不错。我会明确地捕获 TaskCanceledException,以确保我不会无意中忽略其他异常。

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

    【讨论】:

      猜你喜欢
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      相关资源
      最近更新 更多