gpt4 book ai didi

wpf - 为什么 CompositionTarget.Rendering 采用 EventArgs 而不是 RenderingEventArgs?

转载 作者:行者123 更新时间:2023-12-03 14:24:08 25 4
gpt4 key购买 nike

CompositionTarget.Rendering event 是一个普通的旧 EventHandler,带有一个普通的旧 EventArgs。然而,在现实生活中,它显然总是得到 RenderingEventArgs 的实例。 .因此,您的事件处理程序必须从转换 EventArgs 开始,以便从中获取有用的信息。

为什么不是 EventHandler<RenderingEventArgs> 类型的事件,所以我们可以更容易地获得论点(更重要的是,我们甚至可以知道论点在那里)? 为什么微软会选择给这个事件一个错误的签名?

我想知道向后兼容性——是否存在 RenderingEventArgs 尚不存在的版本? ——但似乎并非如此。根据 MSDN,RenderingEventArgs 和 CompositionTarget 是在两个平台上的同一版本中引入的——在 WPF 中,两者都是在 .NET 3.0 中添加的;在 Silverlight 中,两者都是在 Silverlight 3.0 中添加的。

如果它给出任何提示,我遇到了一个旧的 discussion thread有人说,“代表正在使用 EventArgs,因为这样做可以在编码方面取得某种性能上的胜利。”如果有人可以解释这可能是什么样的表现胜利,我愿意接受这个答案。

最佳答案

编码胜利可能是低级内存管理的事情。因为 EventArgs 是事件最常见的参数形式,所以在插件的低级事件处理实现中可能会预先分配缓冲区。它甚至可能只是在某些平台上的胜利,而且只有在密集渲染的情况下。

在最新的 SL 版本中,渲染速度得到了显着提高,我怀疑是这样的调整正在插入这一点。

当接口(interface)因实现而受到影响时会很痛苦,但如果胜利很重要,这是一个公平的权衡。此外,在这种情况下,功能并没有真正的损失,因为它很容易转换和获取基础数据。

关于wpf - 为什么 CompositionTarget.Rendering 采用 EventArgs 而不是 RenderingEventArgs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3627275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com