如何释放/解锁/关闭剪贴板,以便其他应用程序不会崩溃

时间:2013-03-12 17:29:08

标签: c# concurrency clipboard

这就是我在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这样的东西来为其他应用程序发布这个资源。

1 个答案:

答案 0 :(得分:0)

您需要尽量减少独家使用剪贴板的时间。通常,您希望打开,清除,更新,关闭。然后剪贴板可用于其他应用程序,这通常会对您的更新做出反应(如果您正在运行剪贴板查看器)。

如果在线程中运行会导致这种情况变慢,或者以易于中断的方式(例如,支持主线程),则不应该在线程中执行此操作。

其他程序应该防止“无法打开剪贴板”错误,但是你应该注意不要让剪贴板保持打开的时间超过必要的时间,并且永远不会导致WM_DrawClipboard消息被发送,直到你完成使用剪贴板。