我正在使用一个搜索框,将在其中加载名称列表。
我背后的代码
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/