在过去的几个小时里,我一直在追踪一个相当具体的错误,因为另一个应用程序打开了剪贴板。本质上,剪贴板是共享资源(根据“为什么我的共享剪贴板不起作用?”)并且您尝试执行
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 的默认行为是以 100 毫秒的延迟尝试 10 次。
最终用户注意到了最后一件事。也就是说,尽管抛出异常,复制到剪贴板操作仍然有效。我无法找到任何关于为什么会这样的进一步信息。
我目前对该问题的解决方案只是默默地忽略异常......这真的是最好的方法吗?