Kri*_*ril 15 clipboard winforms
Exception Type: ExternalException
Message: Requested Clipboard operation did not succeed.
Method: ThrowIfFailed
Source: System.Windows.Forms
Stack Trace:
at System.Windows.Forms.Clipboard.ThrowIfFailed(Int32 hr)
at System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy, Int32 retryTimes, Int32 retryDelay)
at System.Windows.Forms.Clipboard.SetText(String text, TextDataFormat format)
at System.Windows.Forms.Clipboard.SetText(String text)
at Deerfield.Base.Controls.DataGridView.ProcessCmdKey(Message& msg, Keys keyData) in C:\Users\Developer\Desktop\deerfield\src\core\Deerfield\Deerfield.Base\Controls\DataGridView.cs:line 555
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.TextBoxBase.ProcessCmdKey(Message& msg, Keys keyData)
at System.Windows.Forms.Control.PreProcessMessage(Message& msg)
at System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)
at System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了这个,但我无法得到一个正确的答案,为什么会发生这种情况.
MSDN文档说,这通常发生在用户切换到另一个应用程序时,但似乎并非如此.
有类似的问题.找到这个条目,基本上说retryTimes在通话中设置为2:
Clipboard.SetDataObject(object data, bool copy, int retryTimes, int retryDelay)
Run Code Online (Sandbox Code Playgroud)
去试试吧.如果有人能发布可重现的测试用例,那将会很好.
根本原因可能是您正在进行两项操作,通常是复制和粘贴,并假设剪贴板可用.当你尝试粘贴时,会发生一个副本(更新剪贴板)然后其他剪贴板查看器对它做出反应.防御是在粘贴操作周围有一个except/sleep/retry机制,这样你就可以优雅地处理它.告诉用户关闭rpdclip等,不会在生产应用程序中飞行.还要确保你没有(ab)使用剪贴板作为拐杖.提供剪贴板是为了方便用户,而不是PROGRAMMER.
| 归档时间: |
|
| 查看次数: |
27968 次 |
| 最近记录: |