询问者
UWP中,如何在函数里实时刷新UI

问题
-
public double MinDistance(Dot[] dots){ if(dots.Length <= 3){ // ...... // 处理小规模问题 } else{ // ...... MinDistance(dots.LeftSubArray()); MinDistance(dots.RightSubArray()); // ...... // 求出最近点对 HighlightDots(dot1,dot2); // 修改求出的两点的属性,实现高亮 // ...... } )
代码大概思路如上,在计算最近点对的同时将当前找到的最近两点高亮。
可能是因为UI线程的原因,上述写法中,HighlightDots函数不会即时在UI中生效,只有在整个MinDistance函数结束后才会生效。
试过将MinDistance改写,加上async,并将HighlightDots改写成如下形式:
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () => { HighlightDots(dot1,dot2); });
但并没有起到实时更新UI的作用。
可能问题很初级,不好意思。
全部回复
-
你好,
请问你这个代码里面 HighlightDots(dot1,dot2), 做了些什么? 是修改了xaml control property还是做了啥?
"Developing Universal Windows apps" forum will be migrating to a new home on Microsoft Q&A (Preview)!
We invite you to post new questions in the "Developing Universal Windows apps" forum’s new home on Microsoft Q&A (Preview)!
For more information, please refer to the sticky post. -
你好,
如果你在调用 HighlightDots(dot1,dot2); 方法的时候没有报错误线程的异常的话,就不是因为UI线程的问题。 我猜测你这个MinDistance本身就是在主UI线程中调用的。 HighlightDots(dot1,dot2)之前的方法是否有异步的方法没有await?
"Developing Universal Windows apps" forum will be migrating to a new home on Microsoft Q&A (Preview)!
We invite you to post new questions in the "Developing Universal Windows apps" forum’s new home on Microsoft Q&A (Preview)!
For more information, please refer to the sticky post. -
你好,
抱歉,回复的晚了。 不过很高兴,你已经能解决问题了。 await/async 是C#比较深的一块,是很容易产生问题的。能自己发现这个问题也说明你已经在这一块有了大的进步。
"Developing Universal Windows apps" forum will be migrating to a new home on Microsoft Q&A (Preview)!
We invite you to post new questions in the "Developing Universal Windows apps" forum’s new home on Microsoft Q&A (Preview)!
For more information, please refer to the sticky post.