• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#线程间不能调用剪切板的解决方法

C#线程间不能调用剪切板的解决方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#线程,c#线程使用,c#线程池,c#线程同步,c#线程暂停等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

最近做一个C#项目,需要用到线程,而且要用到剪切板,创建了一个子线程之后发现在子线程中剪切板上获取不到数据,经过一番查找与测试最终该问题得以解决,现将解决方法归纳如下,供大家参考:

第一步:

public void btnAutoFocus_Click(object sender,EventArgs e)
{
Thread myThread = new Thread(msc.AutoFocusArithmetic);
//注意,一般启动一个线程的时候没有这句话,但是要操作剪切板的话这句话是必需要加上的,
//因为剪切板只能在单线程单元中访问
//这里的STA就是指单线程单元
myThread .SetApartmentState(ApartmentState.STA); 
myThread .Start();
}

</div>

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

static class Program
{
///
/// 应用程序的主入口点。
///

[STAThread] //这句话保留,如果要在主线程中访问剪切板,这句式必须要的
//如果要在子线程中访问剪切板,这个应该可以不要,但是默认是有的
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
//Application.Run(new TestRGBPixelThumbForm());
//Application.Run(new TestImageForm());
//Application.Run(new TestJudgeDefinitionForm());
//Application.Run(new TestVirusForm());
}
}

</div>

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

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

至此问题得以解决。

</div> </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#往线程里传递参数的方法小结
  • C#中实现线程同步lock关键字的用法详解
  • C#多线程传递参数及任务用法示例
  • C#线程池操作方法
  • C#实现多线程的同步方法实例分析
  • C#控制台下测试多线程的方法
  • C#多线程与跨线程访问界面控件的方法
  • C#线程入门教程之单线程介绍
  • C#实现软件监控外部程序运行状态的方法
  • C#中线程同步对象的方法分析

相关文章

  • 2017-05-28C#实现漂亮的数字时钟效果
  • 2017-05-28浅谈C#中简单的异常引发与处理操作
  • 2017-05-28C# 遍历枚举类型的所有元素
  • 2017-05-28PC蓝牙通信C#代码实现
  • 2017-05-28深入分析C#中处理和键盘相关事件的详解
  • 2017-05-28c#集合快速排序类实现代码分享
  • 2017-05-28C#实现的MD5加密功能与用法示例
  • 2017-05-28c#使用S22.Imap收剑灵激活码邮件代码示例(imap收邮件)
  • 2017-05-28C#中父窗口和子窗口之间控件互操作实例
  • 2017-05-28C#使用GDI绘制矩形的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • c#基础学习之封装
    • c#使用资源文件的示例
    • c#数组详解
    • 详解C#读取Appconfig中自定义的节点
    • C#抓取当前屏幕并保存为图片的方法
    • C#实现操作MySql数据层类MysqlHelper实例
    • c#创建Graphics对象的三种方法
    • c#之利用API函数实现动画窗体的方法详解
    • c#哈希算法的实现方法及思路
    • C#泛型编程介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有