在背景工人中运行动画
-
04-10-2019 - |
题
我是在VB 2008中开发的应用程序,并使用后台工作者复制文件。我有自己的设计表格,该表格与副本一起在表单顶部扮演动画片。要使用“ AxmsComctl2.axanimation”播放动画,我会得到
“ ActiveX Control''无法实例化,因为当前线不在单线读取公寓中。”
在搜索中,我找到了一个链接:论坛链接
但是仍然在此链接中,首先我不明白在哪里插入该片段,其次是如何在背景工作者上实现这个想法。
请指导我在这方面。
感谢和问候,
小牛。
解决方案
您需要使用委托并让主线程实际控制动画。您是从背景线程中调用代表,但在主线程中运行。第二篇文章有一个粗略的想法:http://www.vbforums.com/showthread.php?t=377205
其他提示
您不能使用背景工作者对此控件进行动画动画。它是一个ActiveX控件,要求您在应用程序的主线程中创建它。创建表单的相同线程。
这是对控件的一个非常普遍的限制,它们不支持螺纹。
链接线程无法解决您的问题。是的,您可以通过调用setapartmentState()并指定sta来创建自己的sta线程,但是现在您无法使用在主线程上创建的表单做任何事情。将控件添加到表单中时,您将获得异常。形式的子控制器必须与表单相同的线程创建。
通常,这应该不是问题。只要您将表格的活动处理程序简短而活泼,动画就应该是相当平稳的。如果这样的事件处理程序需要做需要一段时间的事情(并因此冻结动画),那么让BGW执行该作业。
不隶属于 StackOverflow