作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Artefact Animator图书馆。我发现这个库不是线程安全的。
为什么需要线程安全?我的 WPF 应用程序有 multiple UI threads .
有没有什么好方法可以在不重新编写库代码的情况下使这个线程安全?我已经通过制作库的多个副本并为我开始的每个线程更改库命名空间来破解它提交,但这是一个糟糕的解决方案,因为现在我有多个源代码副本并调整了 using 语句。也许有某种方法可以自动执行此操作或使用反射包装 namespace ?我不知道。
关于为什么我这样做的背景:我有大约 5 到 15k 个 WPF 图像对象,我正在制作动画(在多个监视器上)。当它们都在一个线程上运行时,动画会变得不稳定。如果有人也有更好的方法来做到这一点,我愿意接受解决方案。
最佳答案
WPF 要求所有窗口/控件/依赖对象都具有线程关联性。因此,如果您在一个线程上创建一个 WPF 窗口,那么以后对该窗口的所有更改都必须在同一线程上发生。因此,实际上所有 WPF 应用程序都只有一个用户界面线程。其他线程可能用于后台处理或其他数据处理事件,但反馈随后会发送到用户界面线程以供显示。
我怀疑您的 Artefact Animator 库是基于这种假设编写的,因为大多数 WPF 应用程序都是这样编写的。转换库需要您了解它的设计,然后正确地重新设计它以按需要工作。这可能很简单,也可能几乎不可能,具体取决于图书馆。
关于c# - 为 WPF 动画制作 C# 库线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28997176/
我是一名优秀的程序员,十分优秀!