0

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

4

1 回答 1

0

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

如果在线程中运行会导致执行速度很慢,或者以容易被中断的方式(例如,有利于您的主线程),那么您不应该在线程中执行此操作。

其他程序应该保护自己免受“无法打开剪贴板”错误的影响,但你应该注意不要让剪贴板保持打开的时间超过必要的时间,并且永远不要在你完成使用剪贴板之前发送 WM_DrawClipboard 消息。

于 2013-03-12T20:16:07.023 回答