gpt4 book ai didi

c# - 等待剪贴板文本更改(错误)

转载 作者:太空狗 更新时间:2023-10-30 00:45:08 26 4
gpt4 key购买 nike

我试图检测每次剪贴板数据更改。因此,我设置了一个计时器并让它持续检查 Clipboard.GetText() 是否有更改。

我正在使用以下代码:

public void WaitForNewClipboardData()
{
//This is in WPF, Timer comes from System.Timers
Timer timer = new Timer(100);
timer.Elapsed += new ElapsedEventHandler(
delegate(object a, ElapsedEventArgs b){
if (Clipboard.GetText() != ClipBoardData)
{
SelectedText.Text = Clipboard.GetText();
ClipBoardData = Clipboard.GetText();
timer.Stop();
}
});
timer.Start();
}

运行时出现以下错误:

Current thread must be set to singlethread apartment (STA) mode before OLE calls can be made.

有人知道为什么吗?

最佳答案

您的方法访问 Clipboard 类,这是一个 OLE 调用,需要调用方处于 STA 模式。这里的问题很可能与您的计时器有关,它在不同的线程上运行。这是一个链接,可以帮助您了解更多相关信息:

http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/2411f889-8e30-4a6d-9e28-8a46e66c0fdb/

另外,这里有一个链接,指向一篇关于如何通过进入 Windows 事件来监控剪贴板的完整文章:

http://www.radsoftware.com.au/articles/clipboardmonitor.aspx

我想这篇文章会给你一些关于如何更好地监控剪贴板的技巧,从而避免这个问题。虽然知道错误发生的原因仍然很好,但有更好的方法来完成此任务。

关于c# - 等待剪贴板文本更改(错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6172677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com