none
关于CompositionTarget.Rendering事件 RRS feed

  • 问题

  • 大侠们好:

    想请教关于CompositionTarget.Rendering事件原理:

    第一,这个事件是如何被触发的?

    第二,从网上看了很多说明该事件默认是每秒大概60次触发一次(不固定)。是由应用程序的帧频决定,而应用程序的帧频由最大帧频设置和硬件环境等因素决定。那意思就是这个每秒大概60次这个频率是改变不了的吗?

    2012年7月9日 3:08

答案

  • Hi,
    这个事件我也不是很熟悉,但是看过一些Event介绍以后,我算是大致了解了,就我的认识给你做出回答。
    首先,该事件是当UI被rerendering之前触发,也就是基本上每帧触发一次。但是这不是唯一能触发该事件的条件,另一种情况也可以,那就是当你force进行update的时候,比如Layout.update()也会触发该事件。
    也就是说帧数我们无法通过编程改变,但是我可以可以force UI进行update来改变事件触发的次数。
    希望对你有帮助。

    Annabella Luo[MSFT]
    MSDN Community Support | Feedback to us

    2012年7月11日 10:29
    版主

全部回复

  • 麻烦大神们讲讲,有文档也行。。谢谢。。。
    2012年7月9日 10:00
  • 是我提的问题有问题吗?怎么没有人回答呢???
    2012年7月11日 1:39
  • Hi,
    这个事件我也不是很熟悉,但是看过一些Event介绍以后,我算是大致了解了,就我的认识给你做出回答。
    首先,该事件是当UI被rerendering之前触发,也就是基本上每帧触发一次。但是这不是唯一能触发该事件的条件,另一种情况也可以,那就是当你force进行update的时候,比如Layout.update()也会触发该事件。
    也就是说帧数我们无法通过编程改变,但是我可以可以force UI进行update来改变事件触发的次数。
    希望对你有帮助。

    Annabella Luo[MSFT]
    MSDN Community Support | Feedback to us

    2012年7月11日 10:29
    版主
  • 非常感谢Annabella luo的回答。

    我测试了wpf应用程序DispatcherTimer设置的时间间隔最小毫秒数为16毫秒。小于16毫秒的设置也是按照16毫秒的间隔来计算。我想通过设置最大帧频的值来改变这个最小毫秒数,例如设置8毫秒,就按8毫秒间隔来处理。

    按照您回答的意思这个值是改变不了啦?

    2012年7月12日 2:29
  • 哦。不好意思我之前没有去了解帧数是否可以改变这个方面,如果你的方法可以改变的话,那也是可行的。这个方面我不是很了解。。

    但是CompositionTarget.Rendering事件确是也可以通过强制刷新UI(Force layout.updates())来触发。


    Annabella Luo[MSFT]
    MSDN Community Support | Feedback to us

    2012年7月12日 7:20
    版主
  • 哦,非常感谢Annabella Luo的回答。

    主要还是希望通过改变.net程序的逻辑,来实现这个帧频的正确性。

    另外从网上查找,知道通过API能获得一个比较准确的Timer。如果不通过API,改程序逻辑是否也可以实现呢?
    2012年7月13日 6:40
  • 这个不是很了解,你可以去C#论坛问下,这里主要讨论关于WPF技术的使用问题。

    谢谢你的谅解。


    Annabella Luo[MSFT]
    MSDN Community Support | Feedback to us

    2012年7月17日 9:36
    版主