菜鸟解决 必须将当前线程设置为单线程单元(STA)模式的报错

 
  private static string[] picAdd = new string[10];

private void button21_Click_1(object sender, EventArgs e)
        {
            Thread InvokeThread = new Thread(new ThreadStart(InvokeMethod));
            InvokeThread.SetApartmentState(ApartmentState.STA);
            InvokeThread.Start();
            InvokeThread.Join();
        }
        private void InvokeMethod()
        {
            //定义控件数组
            PictureBox[] mypic = { pictureBox1, pictureBox2, pictureBox3, pictureBox4, pictureBox5, pictureBox6, pictureBox7, pictureBox8, pictureBox9, pictureBox10 };

            if (pictureBox10.Image == null)
            {
                for (n = 0; n < 10; n++)
                {
                    FormMain.ShowPic(mypic[n]);
                    picAdd[n] = FormMain.picAddress;//传递文件的物理路径
                }
            }
            else
            {
                MessageBox.Show("已经有图片,不用再添加数据!");
            }
        }

            public static void ShowPic(PictureBox picBox)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files(*.*)|*.*";
            ofd.RestoreDirectory = true;

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                picAddress = ofd.FileName;
                Image imge = Image.FromFile(picAddress);
                Bitmap bm = new Bitmap(imge, picBox.Width, picBox.Height);
                picBox.Image = bm;
            }

        }

原文地址:https://www.cnblogs.com/any-kiss/p/11610698.html

时间: 2024-10-20 09:16:33

菜鸟解决 必须将当前线程设置为单线程单元(STA)模式的报错的相关文章

在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记。 多线程操作剪切板的时候。

最近做一个蛋疼的东西就是C#调用windows API 来操作一个 软件,自动处理一些东西.要用到剪切板复制 粘贴功能,即 Clipboard.SetDataObject(filedic, true)等. 本来测试的时候,通过主线程 按钮点击开始的时候没有任何问题.但是把整个过程放在一个单独一个线程的时候一到复制的时候就报错, “在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记”.但是查看我的主线程main

选择目录,选择文件夹的COM组件问题。在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。

异常: 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常. 方法1: class Program { /// <summary> /// 图片资料文件同步 /// </summary> /// <param name="args"></param> [STAThread] //加这个属性,创建并进入单

FolderBrowserDialog 关于设置为单线程单元(STA)模式的问题

当Main函数是这样的状态的时候,当打开FolderBrowserDialog控件的时候 ,报错 这里有两种解决办法,第一种,就是把main 上加[STAThread] 第二种是启用一个线程 Thread newThread = new Thread(new ThreadStart(ToOpenBD));//初始化线程 参数是委托  ToOpenBD是方法名字,没有参数            newThread.SetApartmentState(ApartmentState.STA);//设置

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

导入导出功能,在调用ShowDialog时的错误,解决办法如下: WinForm窗体的入口点: /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] private static void Main(String[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Applicati

类中调用界面ActiveX控件报错当前线程不在单线程单元中因此无法实例化 ActiveX 控件的解决办法

解决办法是Form类中定义一个静态的ActiveX对象,在formload中将界面上的ActiveX对象赋值给新定义的对象,类中访问该静态对象即可. public static AxClientDriver_NTLib.AxClientDriverCtrl com = new AxClientDriver_NTLib.AxClientDriverCtrl(); private void Form1_Load(object sender, EventArgs e) { com = this.axC

解决c#所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。 转载

最近做一个后来程序,启动了事务后有一段操作业务,当运行一段时间后,出现这个异常 CLR 无法从 COM 上下文 0x1b1c38 转换为 COM 上下文 0x1b1da8,这种状态已持续 60 秒.拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积.要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMulti

js插件设置innerHTML时,在IE8下报错“未知运行时错误”

问题描述: 网站中使用了一个js插件,设置innerHTML时,在IE8下报错“未知运行时错误”: <div id=”divContainer”> <a name=”link”> -->报错处 第三方插件内容… </a> </div> 原因: 所设置的innerHTML的对象是一个<a>,是由于<a>的对象包容性的比较低,当浏览器运行这段脚本时,校验出了运行时错误. 解决方法: 将<a>标签替换为<div>

单线程单元(STA)线程都应使用泵式等待基元

CLR 无法从 COM 上下文 0x20ad98 转换为 COM 上下文 0x20af08,这种状态已持续 60 秒.拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积.要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息 解决方法 ct

解决eclipse: Resource is out of sync with the file system 报错问题

eclipse版本:4.3 在eclipse中搜索时,搜索完之后有时候会弹出错误对话框,错误摘录如下: Resource is out of sync with the file system......分析:这个问题是由于eclipse中文件不同步引起的.在eclipse中,工程文件是由eclipse自动扫描添加的,如果在外部修改了工程目录中的文件但 又关闭了自动刷新功能,则会引起文件不同步,从而搜索时出现Resource is out of sync with the file system