我有一个简单的WPF应用程序,它创建一个Thread,每秒轮询剪贴板并修剪它找到的任何字符串
但是,在后台线程中,一旦字符串内容发生更改,剪贴板方法将失败并显示异常
OpenClipboard Failed (Exception from HRESULT: 0x800401D0 (CLIPBRD_E_CANT_OPEN))
示例:我有" ABC"在我的剪贴板上并启动应用程序。将弹出一个消息框,其中包含字符串ABC。现在我复制一个字符串" DEF"而不是弹出一个消息框,应用程序崩溃与上述错误
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Thread t = new Thread(new ThreadStart(cleanStr));
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
void cleanStr()
{
string prevStr = "";
int err = 0;
while (true)
{
if (Clipboard.ContainsText() && !prevStr.Equals(Clipboard.GetText()))
{
prevStr = Clipboard.GetText();
prevStr=prevStr.Trim();
Clipboard.SetText(prevStr);
MessageBox.Show(prevStr);
Thread.Sleep(1000);
}
}
}