Au cours des deux dernières heures, j'ai recherché un bogue assez spécifique qui se produit lorsqu'une autre application a le presse-papiers ouvert. Essentiellement, comme le presse-papiers est une ressource partagée (conformément à la norme "Pourquoi mon presse-papiers partagé ne fonctionne pas ?" ) et vous tentez d'exécuter
Clipboard.SetText(string)
ou
Clipboard.Clear().
L'exception suivante est levée :
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)
Ma solution initiale consistait à réessayer après une courte pause, jusqu'à ce que je réalise que Clipboard.SetDataObject possède des champs pour le nombre de tentatives et la durée du délai. Le comportement par défaut de .NET est d'essayer 10 fois avec un délai de 100 msec.
Il y a une dernière chose qui a été notée par l'utilisateur final. En effet, malgré la levée de l'exception, l'opération de copie dans le presse-papiers fonctionne toujours. Je n'ai pas été en mesure de trouver d'autres informations sur la raison de cette situation.
Ma solution actuelle consiste à ignorer l'exception en silence... Est-ce vraiment la meilleure solution ?