【发布时间】:2013-06-08 09:43:55
【问题描述】:
当我将光标移到该控件上时,我试图将控件向右滑动,并在光标移出时向后滑动。
由于表单包含许多具有相同动画的控件,我决定让这些控件在不同的线程上滑动。问题是,当我创建一个线程并使用Control.Invoke() 更改控件的位置时,主 UI 会冻结,直到动画完成。
我做错了什么?或者有什么办法可以解决?
编辑:也使用了Control.BeginInvoke()。结果是一样的。
【问题讨论】:
-
试过 beginInvoke() 吗?
-
是的。两者都会冻结主 UI。
-
您过于频繁地调用 Begin/Invoke(),导致 UI 线程充斥着调用请求。这使它停止绘画,这是一个低优先级的任务。使用工作线程会使它变慢,而不是更好。支持 Windows 中对动画的内置支持,请查看 this answer。
标签: c# multithreading thread-safety