如何在C#中关闭剪贴板资源?

时间:2013-03-13 09:11:10

标签: c# clipboard concurrent-programming clipboard-interaction

下面是我如何将文本字符串放入Windows剪贴板的代码。我正在寻找一个命令来立即关闭剪贴板资源,以便它不再被应用程序锁定。你知道如何在C#中明确地关闭剪贴板资源吗?

这是代码

String s = "Hello World";
Thread staThread3 = new Thread
(
    delegate()
    {
        try { new SetClipboardHelper(DataFormats.Text, s).Go();}
        catch (Exception ex)  { /* Exception Handling */ }
    }
);
staThread3.SetApartmentState(ApartmentState.STA);
staThread3.Start();
staThread3.Join();
// Here I would like to close the clipboard
// ????

这是SetClipboardHelper类的代码

class SetClipboardHelper : StaHelper
{
    readonly string _format;
    readonly object _data;

    public SetClipboardHelper(string format, object data)
    {
        _format = format;
        _data = data;
    }

    protected override void Work()
    {
        var obj = new System.Windows.Forms.DataObject(
            _format,
            _data
        );

        Clipboard.SetDataObject(obj, true);
    }
}

1 个答案:

答案 0 :(得分:0)

如果您通过调用OpenClipboard()方法“锁定”(阻止其他应用修改)剪贴板,那么您可以(并且您应该,因为它阻止其他应用程序使用它)将其关闭{{3} }。

CloseClipboard()是复制到剪贴板时应该坚持的序列。