none
优化page.SizeChanged事件 RRS feed

  • 问题

  • 做了一个小应用,在SizeChanged事件中进行了一些数据加载,及重新绘制的工作(主要是为了适配)。90%的情况下运行都是十分良好的,但是最近碰到一个变态的测试,拿着Pad疯狂转圈,若干次之后,屏幕开始出现黑色拖影,程序响应明显变慢,再转几下程序崩了```

    个人认为应该是系统算不过来的原因导致的。

    请问你们有什么更好的解决方案吗


    别紧张,我不是什么好人。。。

    2012年10月23日 1:55

答案

  • 跨线程调用阿,在你要调UI的地方用下面这样的方式处理就可以了

    Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {

                  //处理UI相关操作

               });

    2012年10月26日 8:01

全部回复

  • 建议可以延迟处理旋转操作,即在发生旋转时候,通过Task.Delay 延迟一段时间,并且设置一个变量标识正在处理延时,然后这个时候再发生旋转则可以判断标识不作任何处理响应,仅仅重置延迟,这样的效果就是直到最后平板稳定后才进行处理数据。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年10月23日 9:01
    版主
  • 不行啊,操作中有修改UI的内容,会报错,唉!

    别紧张,我不是什么好人。。。

    2012年10月24日 3:27
  •  Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {

                  //处理UI相关操作

               });

    • 已建议为答案 Schbook 2012年10月26日 6:15
    • 取消建议作为答案 Schbook 2012年10月26日 6:15
    2012年10月24日 4:42
  • OnPropertyChanged 如何同步。

    是这样的,在SizeChanged中,我有一个loadPhoto的方法,在下载完成之后,会通过 OnPropertyChanged 通知UI。

    如果我用

    Task.Run(() => LoadPhotoAsync(downloadSwitch.Token));去下载的话,它又会报线程错误,有什么解决方案吗?


    别紧张,我不是什么好人。。。

    2012年10月26日 6:24
  • 跨线程调用阿,在你要调UI的地方用下面这样的方式处理就可以了

    Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {

                  //处理UI相关操作

               });

    2012年10月26日 8:01