zoukankan      html  css  js  c++  java
  • C# 线程间不能调用剪切板的问题

    最近做一个项目,需要用到线程,而且要用到剪切板,创建了一个子线程之后发现在子线程中剪切板上获取不到数据,当时特别纳闷,上网查资料,最后终于搞定,现将解决方法归纳如下:

    第一步:

    public void btnAutoFocus_Click(object sender,EventArgs e)

    {

    Thread myThread = new Thread(msc.AutoFocusArithmetic);

    //注意,一般启动一个线程的时候没有这句话,但是要操作剪切板的话这句话是必需要加上的,因为剪切板只能在单线

    //程单元中访问,这里的STA就是指单线程单元

    myThread .SetApartmentState(ApartmentState.STA);  

    myThread .Start();

    }

    第二步:还需要将Program启动类中

    static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]  //这句话保留,如果要在主线程中访问剪切板,这句式必须要的,如果要在子线程中访问剪切板,这个应该可以不要,但是默认是有的,不过这个我没有测试过不要这句话是什么结果,后面有时间测试之后再发博文
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MainForm());
            }
        }

    第三步:这个是读取剪切板数据,

    private Image GetCaptureImage()
    {
            IDataObject iData = Clipboard.GetDataObject();
            Image img = null;
            if (iData != null)
            {
                 if (iData.GetDataPresent(DataFormats.Bitmap))
                 {
                      img = (Image)iData.GetData(DataFormats.Bitmap);
                 }
                 else if (iData.GetDataPresent(DataFormats.Dib))
                 {
                      img = (Image)iData.GetData(DataFormats.Dib);
                 }
            }
            return img;

    }

  • 相关阅读:
    通过w3c方式 读取xml内容
    ssm项目 maven 项目pon.xml 配置
    myeclipse 2014新建maven web 项目步骤
    Maven学习
    常用正则学习
    Maven 那点事儿
    Chrome 里的请求报错 " Provisional headers are shown"
    php框架thinkphp3.2.3 配置文件bug
    $_GET $_POST $_REQUEST
    php检测函数
  • 原文地址:https://www.cnblogs.com/ching2009/p/4293593.html
Copyright © 2011-2022 走看看