簡體   English   中英

如何在Windows 8.1中使用SearchBox時優雅地處理TaskCancelledException

[英]How to gracefully handle TaskCancelledException while using SearchBox in Windows 8.1

我正在使用一個搜索框,我將加載一個名單列表。

我的代碼背后

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM