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

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

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

    “在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记”。但是查看我的主线程main函数旁边赢标记过了。

    不知道怎么办,想想是不是要在线程函数上也标记,但是我想太多了,不行。最后度娘搜索多线程 “在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式,请确保您的Main函数带有STAThreadAttribute标记”

    错误,度娘里知道线程有个ApartmentState  属性 ,其实我也没有整明白,就知道 有STA 等枚举类型。想想应该是这里的问题。就把单独线程设置成 _thread.SetApartmentState(ApartmentState.STA); 

    还真的再没有报上述错误。算是把问题解决了。但是为什么会是这样的。等后面研究明白了更新随笔。

  • 相关阅读:
    近两年项目回顾系列——velocity模板引擎
    求两个集合的交集和并集C#
    CI框架下JS/CSS文件路径的设置
    Apache下的 SSI 配置
    DOTA
    MySql 查询结果按照指定的顺序
    strtotime 方便获取前几天后几天
    CI框架的session失效原因
    正则解析多重循环模板
    PHP 多维数组按照指定的顺序进行排序
  • 原文地址:https://www.cnblogs.com/boskg/p/5169477.html
Copyright © 2011-2022 走看看