using System; using System.Runtime.InteropServices; using System.Threading; using System.Windows; public static class ClipboardHelper { /// /// 安全复制文本,包含冲突重试机制 /// public static void SetText(string text) { if (string.IsNullOrEmpty(text)) return; // 最多尝试 5 次,每次间隔 100 毫秒 for (int i = 0; i < 5; i++) { try { Clipboard.SetText(text); return; // 复制成功,退出方法 } catch (COMException ex) { // 如果是剪贴板被占用错误,等待后重试 if ((uint)ex.ErrorCode == 0x800401D0) { Thread.Sleep(100); continue; } throw; // 其他 COM 错误则抛出 } catch (Exception) { if (i == 4) throw; // 最后一次尝试失败则抛出 Thread.Sleep(100); } } } }