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/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!