我在C#的窗体(winform)中插入Shockwave   Flash   Object组件,并设置好了FLASH文件,但在运行中却出现了下面的错误:
  未处理的ThreadStateException    
  当前线程不在单线程单元中,因此无法实例化   ActiveX   控件“d27cdb6e-ae6d-11cf-96b8-444553540000”。   请问怎样解决呀!!!   如果重新新建这个工程,运行后又一切正常了。

解决方案 »

  1.   

    我查了网上的内容,大多都是说需要加[STAThread]
    可是我莫名的就是其实在新建工程的时候[STAThread]就是自动添加上去的。不需要手工添加这段代码。运行代码仍然会报ThreadStateException异常。
    尝试使用ApartmentState,异常仍然存在。
    利用单独创建线程,错误的确没有了,但破坏了主线程的逻辑,原本主线程是先播放flash,然后执行之后的代码,给客户一种显示的效果。加了线程之后,有可能就是先执行了之后的代码,然后再播放flash,或者索性flash就不播放了。所以一系列的问题困扰着我。希望大家能够帮我想想办法。谢谢。
      

  2.   

    LZ:怎么叫这个控件打开一个FLASH文件?
    我也想试验一下,谢谢!
      

  3.   

    楼上的,也就是flash控件显示Flash。
    flashcontrol.movie=flash文件地址;
    flashcontrol.play();