none
UWP中,如何在函数里实时刷新UI RRS feed

  • 问题

  • 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的作用。

    可能问题很初级,不好意思。

    2020年4月21日 7:12

全部回复

  • 你好,

    请问你这个代码里面 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.

    2020年4月21日 8:05
  • 修改了一个形状的Fill属性
    2020年4月21日 9:34
  • var brush = new SolidColorBrush(Windows.UI.Colors.Orange);
    dot1.SetValue(Ellipse.FillProperty, brush);

    2020年4月21日 9:37
  • 你好,

    如果你在调用 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.

    2020年4月22日 7:13
  • 用VS调试,看线程不是主线程,是工作线程。函数MinDistance我放在一个按钮的响应方法里面的。

    之前没有用任何异步的方法。

    意思是我这个思路没错吗?给MinDistance加上async属性,然后await DisPatcher.RunAsync(……)?

    2020年4月22日 7:50
  • 问题解决了,是我对async/await的理解有问题,三言两语说不清我犯了什么蠢。真不好意思,麻烦你了,非常感谢你能回复我给我指点。
    2020年4月22日 16:26
  • 你好,

    抱歉,回复的晚了。 不过很高兴,你已经能解决问题了。 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.

    2020年4月24日 1:35