C# CompositionTarget.Rendering未调用?

C# CompositionTarget.Rendering未调用?,c#,wpf,C#,Wpf,在WPF中,当我尝试将事件附加到CompositionTarget.Rendering时,它从未被调用。为什么会这样 我的目的是测量WPF应用程序的每秒帧数(FPS) 更新 现在,我可以测量WPF应用程序每秒的帧数了。请参阅下面的答案。这很有效 在WPF调度程序线程上附加处理程序: this.dispatcher.BeginInvoke(() => { CompositionTarget.Rendering += this.WpfRenderFrameCallback; });

在WPF中,当我尝试将事件附加到CompositionTarget.Rendering时,它从未被调用。为什么会这样

我的目的是测量WPF应用程序的每秒帧数(FPS)

更新 现在,我可以测量WPF应用程序每秒的帧数了。请参阅下面的答案。

这很有效 在WPF调度程序线程上附加处理程序:

this.dispatcher.BeginInvoke(() =>
{
    CompositionTarget.Rendering += this.WpfRenderFrameCallback;
});
这行不通
如果您试图在后台线程上附加处理程序,则永远不会调用
this.WpfRenderFrameCallback

您在哪里编写此代码的?在
中加载
?在构造函数中?你怎么可能不在GUI线程上?@binki这段代码可以在任何地方,只要它在应用程序启动时执行。关键是您必须将WpfRenderFrameCallback处理程序附加到dispatcher线程上,而不是某个后台线程上。只要您从GUI事件处理程序(如
\u Loaded
)中使用它,“This will not work”位,它就可以正常工作。我认为,使用这样的模式可以减少冗长,使用更少的代码,更符合预期的模式。
CompositionTarget.Rendering += this.WpfRenderFrameCallback;