En el transcurso de las últimas dos horas he estado rastreando un error bastante específico porque eso ocurre porque otra aplicación tiene el portapapeles abierto. Esencialmente como el portapapeles es un recurso compartido (según "Why does my shared clipboard not work?") y se intenta ejecutarCómo manejar portapapeles bloqueados y otras rarezas
Clipboard.SetText(string)
o
Clipboard.Clear().
La excepción siguiente:
System.Runtime.InteropServices.ExternalException: Requested Clipboard operation did not succeed. 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)
Mi solución inicial fue para volver a intentar después de una breve pausa, hasta que me di cuenta de que Clipboard.SetDataObject tiene campos para el número de veces y la duración del retraso, el comportamiento predeterminado de .NET es intentar 10 veces con retraso de 100 ms.
Hay una última cosa que el usuario final ha observado, es decir, a pesar de que la operación de copiar al portapapeles aún funciona, no he podido encontrar más información sobre por qué puede ser así.
Mi solución actual al problema es simplemente ignorar silenciosamente la excepción ... ¿es esta la mejor manera?
He leído acerca de GetOpenClipboardWindow, parece que esa es la mejor solución para los problemas de acceso al portapapeles. Gracias por su respuesta. –
Cómo obtener el proceso bloqueando el Portapapeles - ver: http://stackoverflow.com/questions/6583642/determine-which-process-is-locking-the-clipboard – toong
Simplemente cierre el portapapeles primero. Ver mi respuesta – Triynko