我正在尝试创建一个动画,在我的应用程序布局中跨画布移动一些图像。
画布被命名layout
,属于主窗口,计时器正在调用事件Animation.Clouds(layout, 1)
。尝试此操作时,我收到有关该对象由另一个线程拥有的错误。这让我相信原因是计时器无法传递 的上下文layout
,从而导致错误。
我将如何解决此问题并传递layout
给计时器以使动画正常工作?
改用DispatcherTimer,它会在它创建的调度程序线程中触发一个滴答声
问题是您只能在 UI 线程上更新 UI 元素。Timer 事件在不同的线程上被调用。
在 Windows.Forms 中,您可以使用BeginInvoke
. 我确信 WPF 有类似的东西。