异常错误:在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式


最近做一个蛋疼的东西就是C#调用windows API 来操作一个摄像头,自动处理一些东西。要用到剪切板复制 粘贴功能,即 Clipboard.SetDataObject(filedic, true)等。

本来测试的时候,通过主线程 按钮点击开始的时候没有任何问题。但是把整个过程放在一个单独一个线程的时候一到复制的时候就报错:

“在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记”。

解决办法如下:

在main函数的入口点:

        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        private static void Main(String[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new LoginForm());
        } 

 

 

参考:

https://www.cnblogs.com/SunXiaoLin/p/4543622.html

https://www.cnblogs.com/boskg/p/5169477.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记。 多线程操作剪切板的时候。 在可以调用OLE之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute 解决“System.Threading.ThreadStateException:“在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试程序附加到该进程才会引发此异常”的异常 C#解决“System.Threading.ThreadStateException:“在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试程序附加到该进程才会引发此异常”的异常 选择目录,选择文件夹的COM组件问题。在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。 如何解决C#异常:必须先将当前线程设置为单线程单元(STA)模式,然后才能进行OLE调用,请确保你的Main函数已在其上标记了STAThreadAttribute 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件 类中调用界面ActiveX控件报错当前线程不在单线程单元中因此无法实例化 ActiveX 控件的解决办法
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM