過去数時間にわたって、別のアプリケーションがクリップボードを開いているために発生するかなり具体的なバグを追跡してきました。基本的に、クリップボードは共有リソースであるため ( 「共有クリップボードが機能しないのはなぜですか?」のように)、実行しようとします。
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 回試行することです。
最後に、エンド ユーザーから指摘されたことが 1 つあります。つまり、例外がスローされても、クリップボードへのコピー操作は引き続き機能します。これがなぜなのかについて、これ以上の情報を見つけることができませんでした。
この問題に対する私の現在の解決策は、例外を黙って無視することです...これは本当に最善の方法ですか?