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); 

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

  • 相关阅读:
    okhttp进行网络传输文件
    bazel、tensorflow_serving、opencv编译问题
    Linux下设置和查看环境变量(转)
    std::move的实际工作过程
    虚拷贝
    移动构造函数和移动赋值
    while(cin>>word)时的结束方法
    转:windows下命令行工具
    eclipse大括号高亮显示---颜色很淡,改为显眼的颜色
    转: Eclipse 分屏显示同一个文件
  • 原文地址:https://www.cnblogs.com/boskg/p/5169477.html
Copyright © 2011-2022 走看看