Windows runtime Metro应用程序搜索激活的ProgressRing未显示
我正在我的Metro应用程序中实现搜索。搜索效果很好,结果和UI都像预期的那样出现了一个问题 我尝试在搜索之前显示一个Windows runtime Metro应用程序搜索激活的ProgressRing未显示,windows-runtime,microsoft-metro,winrt-xaml,c#-5.0,winrt-async,Windows Runtime,Microsoft Metro,Winrt Xaml,C# 5.0,Winrt Async,我正在我的Metro应用程序中实现搜索。搜索效果很好,结果和UI都像预期的那样出现了一个问题 我尝试在搜索之前显示一个ProgressRing,并在搜索完成后隐藏它,但它从未显示出来 我缺少什么,下面的代码片段: protected override void OnSearchActivated(Windows.ApplicationModel.Activation.SearchActivatedEventArgs args) { // Some Metro de
ProgressRing
,并在搜索完成后隐藏它,但它从未显示出来
我缺少什么,下面的代码片段:
protected override void OnSearchActivated(Windows.ApplicationModel.Activation.SearchActivatedEventArgs args)
{
// Some Metro designer generated code here
// Show progress ring
MainPage.Current.ResetProgressRingState(true);
// Bind search results
MainPage.Current.BindSearchResults(args.QueryText);
// Ensure the current window is active
Window.Current.Activate();
// Hide progress ring
MainPage.Current.ResetProgressRingState(false);
}
我怀疑需要等待BindSearchResults
方法才能使progressing
正常工作。如果是这样,最简单的方法是什么使该方法成为可等待的方法,如果不是,请告知我这里缺少的内容
如果是这样的话,最简单的方法是什么?如果不是的话,请告诉我这里缺少了什么
将其标记为
async
,并让其返回Task
。在该方法中,对其他异步操作使用wait
。此方法包含大量UI交互,其中没有异步调用。我可以将它包装在wait Task.Run中,但在那里我必须将所有UI内容包装在dispatcher.RunAsync调用中。对我来说似乎太过分了。有什么建议吗?添加了一个等待任务。在该方法中延迟(10)。干净、简单,但不确定是否合适。我不会使用Task.Delay
。我假设该方法中有一些东西需要时间,这就是为什么要显示进度指示器。你应该寻找什么在占用时间;常见的罪魁祸首是磁盘或网络I/O。鉴于这是一个Metro应用程序,我希望I/O是异步的。我怀疑“大量的UI交互”是罪魁祸首。