Message: 因为当前线程不在单线程单元中,故无法实例化 ActiveX 控件 错误处理方法
2005-10-27 15:27
701 查看
最近在做一个简单的屏幕保护程序,功能很简单就是在机器长时间不用的情况下,间隔一定时间启动一个屏幕保护程序。我这里有个特殊情况就是要播放一些媒体文件(.avi,.wmv)和flash文件等,因此我使用的是windows自带的WindowsMediaPlayer来做播放器。
由于一些特殊原因,我需要在一个没有GUI的程序中启动屏幕保护程序,因此最初使用的是System.Threading.Timer来做定时器的,但是在测试中发现总是出席以下异常:
Message: 因为当前线程不在单线程单元中,故无法实例化 ActiveX 控件“6bf52a52-394a-11d3-b153-00c04f79faa6”。
Source: System.Windows.Forms
at System.Windows.Forms.AxHost..ctor(String clsid, Int32 flags)
at System.Windows.Forms.AxHost..ctor(String clsid)
at AxWMPLib.AxWindowsMediaPlayer..ctor()
...
后来弄了好长时间才发现,原来WindowsMediaPlayer控件只能在单线程环境下才可以运行,后来将我的Timer改成System.Windows.Forms.Timer对象,再进行测试,一切OK!
总结:通过这次错误发现自己在写一些程序的时候没有很好的阅读MS的开发文档,主要是没有关注线程安全方面的东西,下次开发中需要特别提出注意.
由于一些特殊原因,我需要在一个没有GUI的程序中启动屏幕保护程序,因此最初使用的是System.Threading.Timer来做定时器的,但是在测试中发现总是出席以下异常:
Message: 因为当前线程不在单线程单元中,故无法实例化 ActiveX 控件“6bf52a52-394a-11d3-b153-00c04f79faa6”。
Source: System.Windows.Forms
at System.Windows.Forms.AxHost..ctor(String clsid, Int32 flags)
at System.Windows.Forms.AxHost..ctor(String clsid)
at AxWMPLib.AxWindowsMediaPlayer..ctor()
...
后来弄了好长时间才发现,原来WindowsMediaPlayer控件只能在单线程环境下才可以运行,后来将我的Timer改成System.Windows.Forms.Timer对象,再进行测试,一切OK!
总结:通过这次错误发现自己在写一些程序的时候没有很好的阅读MS的开发文档,主要是没有关注线程安全方面的东西,下次开发中需要特别提出注意.
相关文章推荐
- 因为当前线程不在单线程单元中,故无法实例化ActiveX 控件
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件的解决方案
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件解决办法
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件
- Current thread must be set to single thread apartment (STA) mode before OLE,当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。
- 类中调用界面ActiveX控件报错当前线程不在单线程单元中因此无法实例化 ActiveX 控件的解决办法
- “当前线程不在单线程单元中,因此无法实例化 ActiveX 控件……” 的解决办法
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件的解决方案
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件 解决
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件解决办法
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96“
- 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件的解决方案
- 解决当前线程不在单线程单元中,因此无法实例化 ActiveX 控件的办法
- .net winform 调用类中的webbrowser 报错:当前线程不在单线程单元中,因此无法实例化 ActiveX
- WebBrowser 当前线程不在单线程单元中的错误
- 错误:在一个线程上创建的控件不能成为在另一个线程控件的父级(处理方法)
- 执行存储过程报错:“SQLSERVER 内部错误。文本管理器无法继续执行当前语句”的处理方法