【发布时间】:2010-10-30 03:15:25
【问题描述】:
在过去的几个小时里,我一直在追踪一个相当具体的错误,因为另一个应用程序打开了剪贴板。本质上,剪贴板是共享资源(根据"Why does my shared clipboard not work?"),您尝试执行
Clipboard.SetText(string)
或
Clipboard.Clear().
抛出以下异常:
System.Runtime.InteropServices.ExternalException:请求的剪贴板操作未成功。 在 System.Windows.Forms.Clipboard.ThrowIfFailed(Int32 小时) 在 System.Windows.Forms.Clipboard.SetDataObject(对象数据,布尔副本,Int32 retryTimes,Int32 retryDelay) 在 System.Windows.Forms.Clipboard.SetText(字符串文本,TextDataFormat 格式) 在 System.Windows.Forms.Clipboard.SetText(字符串文本)我最初的解决方案是在短暂的暂停后重试,直到我意识到 Clipboard.SetDataObject 具有用于次数和延迟长度的字段。 .NET 的默认行为是尝试 10 次,延迟为 100 毫秒。
最终用户注意到了最后一件事。也就是说,尽管抛出异常,复制到剪贴板操作仍然有效。我无法找到任何进一步的信息来说明为什么会这样。
我目前对该问题的解决方案只是默默地忽略异常......这真的是最好的方法吗?
【问题讨论】: