这就是我在C#程序中设置剪贴板内容(文本字符串)的方法:
Thread staThread3 = new Thread(
delegate()
{
try
{ new SetClipboardHelper(DataFormats.Text, s).Go();}
catch (Exception ex)
{
threadEx = ex;
}
});
staThread3.SetApartmentState(ApartmentState.STA);
staThread3.Start();
staThread3.Join();
问题:这是设置剪贴板的安全方法,还是这段代码仍然锁定其他应用程序的剪贴板?可能是我必须添加像
这样的声明staThread3.Abort();
==编辑==
根据评论,我想提出一个问题:我是否可以添加到我的代码中,以便其他应用程序使用剪贴板更安全。我正在寻找像CloseClipboard这样的东西来为其他应用程序发布这个资源。
答案 0 :(得分:0)
您需要尽量减少独家使用剪贴板的时间。通常,您希望打开,清除,更新,关闭。然后剪贴板可用于其他应用程序,这通常会对您的更新做出反应(如果您正在运行剪贴板查看器)。
如果在线程中运行会导致这种情况变慢,或者以易于中断的方式(例如,支持主线程),则不应该在线程中执行此操作。
其他程序应该防止“无法打开剪贴板”错误,但是你应该注意不要让剪贴板保持打开的时间超过必要的时间,并且永远不会导致WM_DrawClipboard消息被发送,直到你完成使用剪贴板。