Requested Clipboard operation did not succeed的解决办法

简介:

在使用Clipboard.SetText(strTar) 将文本复制进剪贴板的时候,有时候会导致Requested Clipboard operation did not succeed的异常,但有时候又不会。

原因:

       剪切板被所有进程共享,但是不能同时被两个进程修改。所以,如果有两个程序同时访问剪贴板,就有可能导致异常的发生。即使电脑中其他的应用程序的窗口没有处于激活状态,它们也可能在后台访问剪贴板,从未导致剪贴板访问冲突。

解决方法:

        在捕获到异常的时候,间隔一定的时间,再次尝试对剪贴板进行操作。

        在.NET framework (2.0)和其以上的版本已经提供了一个方法Clipboard.SetDataObject(object data, bool copy, int retryTimes, intretryDelay) 用来解决这个问题。他会在访问剪贴板冲突的时候,间隔一定的时间,尝试访问剪贴板。

方法的说明:

复制代码
//
        // 摘要:
        //     尝试指定的次数,以将数据置于系统剪贴板中,且两次尝试之间具有指定的延迟,可以选择在退出应用程序后将数据保留在剪贴板中。
        //
        // 参数:
        //   data:
        //     要置于剪贴板中的数据。
        //
        //   copy:
        //     如果想在退出应用程序后将数据保留在剪贴板中,则为 true;否则为 false。
        //
        //   retryTimes:
        //     尝试将数据置于剪贴板中的次数。
        //
        //   retryDelay:
        //     两次尝试之间暂停的毫秒数。
        //
        // 异常:
        //   System.Threading.ThreadStateException:
        //     当前线程未处于单线程单元 (STA) 模式下。请将 System.STAThreadAttribute 添加到应用程序的 Main 方法中。
        //
        //   System.ArgumentNullException:
        //     data 为 null。
        //
        //   System.ArgumentOutOfRangeException:
        //     retryTimes 小于零。- 或 -retryDelay 小于零。
        //
        //   System.Runtime.InteropServices.ExternalException:
        //     未能将数据置于剪贴板中。这种情况通常发生在剪贴板正在被其他进程使用的时候。
        public static void SetDataObject(object data, bool copy, int retryTimes, int retryDelay);
复制代码

参考链接

ClipBoard.SetText Exception

Requested Clipboard operation did not succeed—MSDB Forums.

Requested Clipboard operation did not succeed—StackOverFlow


作者:kissazi2 
出处:http://www.cnblogs.com/kissazi2/ 
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/kissazi2/archive/2013/03/12/2954915.html

目录
相关文章
快手私信群发工具,自动批量发送私信脚本插件,导入ID自动关注收藏点赞
这是一款快手自动化营销工具源码,支持精准私信、关注与互动。通过模拟点击和消息发送,可实现全自动打招呼功能
|
弹性计算 负载均衡 应用服务中间件
slb健康检查域名配置
slb健康检查域名配置
215 7
|
缓存 JavaScript 持续交付
“解锁Node.js新纪元:如何借助Docker打造快速、高效且一致性的现代应用部署体验”
【10月更文挑战第25天】本文介绍了如何使用Docker容器化Node.js应用,包括容器化的好处、创建Docker镜像的步骤、构建和运行镜像的方法、管理依赖、保持应用更新以及调试技巧。通过容器化,可以提高应用的可移植性和可扩展性,简化开发和部署流程。
227 2
|
网络协议 API 开发者
Python中的会话管理:requests.Session深度解析
Python中的会话管理:requests.Session深度解析
|
存储 算法 NoSQL
常见限流算法及其实现
在分布式系统中,随着业务量的增长,如何保护核心资源、防止系统过载、保证系统的稳定性成为了一个重要的问题。限流算法作为一种有效的流量控制手段,被广泛应用于各类系统中。本文将详细介绍四种常见的限流算法、两种常用的限流器工具,从原理、源码的角度进行分析。
1227 0
|
程序员
带你读《电路基础》之一:基本概念
本书内容采用简明易懂的风格,介绍了六步解决问题的方法,并在实践中的问题和实践问题,结合了超过468个新的或改变家庭作业问题。涵盖了全面的线性电路分析的方法,并保留了“设计一个问题”的功能,这有助于学生发展他们的设计技能,有学生发展的问题,以及解决方案。
CentOS cp 复制隐藏文件提示 cp: cannot stat ?.xxx*?. No such file or directory
执行的命令与错误信息: # cp -a /etc/skel/* /home/postgrescp: cannot stat ?.etc/skel/*?. No such file or directory 使用cp复制普通文件时,可以使用 * 号通配符,而在复制隐藏文件时,需要使用.
5123 0
|
XML 存储 Java
一文搞懂Spring Boot 配置加载原理以及配置优先级
背景:最近有个开发同学问我,为什么他在配置文件里面配置了端口号但是一直不生效,我看了后发现在其他地方已经配置过端口号了,所以当前配置不生效,那么到底Spring Boot 是如何处理配置文件的呢,在配置项重复的情况下又是如何处理的呢
5013 1
一文搞懂Spring Boot 配置加载原理以及配置优先级
|
JavaScript 前端开发 算法
JavaScript学习 -- 对称加密算法3DES
JavaScript学习 -- 对称加密算法3DES
353 0