c# - 哪个更快更有效——begininvoke 还是 synchronisecontext.post?

标签 c# wpf .net-4.0 multithreading

有没有人试图找出 - control.BeginInvoke 或 SynchroniseContext.Post 哪个更快,哪个更高效(创建的对象更少,因此涉及的 GC 更少)?

WPF、C#、.NET 4

我希望得到有实际支持的回答,而不是“我认为”或“我在某处听说”。

干杯

附言我将向几个控件发布大量消息,我希望它最高效和快速(几百次更新/秒)。我知道 .NET 可以处理这个(我以前做过)但现在我希望它尽可能快...

最佳答案

首先,WPF 中没有 Control.BeginInvoke(您想到的是 winforms)。其次,SynchronizationContext 是对当前平台提供的任何同步机制的抽象。对于 WPF,它是 Dispatcher 的抽象。从理论上讲,您为使用抽象而不是直接使用 Dispatcher 付出了很小的代价。但抽象是有充分理由的——有时您需要编写独立于平台的线程同步代码。如果您不这样做,请务必直接使用 Dispatcher

关于c# - 哪个更快更有效——begininvoke 还是 synchronisecontext.post?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8234251/

相关文章:

c# - WPF ListBox 将 SelectedItem 值发送到 View 模型

c# - DateTime.ParseExact FormatException 字符串未被识别为有效的 DateTime

c# - File.Move 不继承目标目录的权限?

c# - 委托(delegate)中的方法参数

c# - 如何使 Newtonsoft.Json.Linq.JObject 不可变?

WPF 控件继承

c# - volatile 变量的值在多线程中不改变

c# - ConnectionMultiplexer 的 dispose() 方法不会刷新所有键和它连接到的 redis 数据库吗?

c# - 为 List<Enum> 构建通用方法

c# - 检查驱动器是否存在(字符串路径)