0

我的 WPF 桌面应用程序中的 Windows 剪贴板有一些问题。我尝试检索剪贴板内容,做一些事情(不写这个内容,只读),然后将内容重新发送到剪贴板。它运行,但重新发送内容后,如果我检索剪贴板内容并尝试再次阅读,我有一个 OutOfMemory 异常。

经过搜索,我找到了这个链接:http ://www.grumpydev.com/2009/09/05/system-outofmemoryexception-gotcha-using-clipboard-getdata-in-wpf/

可能是因为序列化问题,我认为我的数据丢失了他的序列化属性,或者当我将它发送到剪贴板时。

这是我的代码:

var data = System.Windows.Clipboard.GetDataObject();
// Read "data"
System.Windows.Clipboard.Clear();
System.Windows.Clipboard.SetDataObject(data, true);

var dataTwo = System.Windows.Clipboard.GetDataObject();
// Read "dataTwo" ==> OutOfMemoryException

请注意,数据没有我项目的类型,它可以是一切(photoshop、excel、图片、文本、二进制......)

有人有想法纠正这个吗?

谢谢你提前

4

1 回答 1

0

Based on the link you mentioned and conclusions in there, it looks as if the data variable type must be marked as [Serrializable].

As you need it to be pretty much "everything" you can try using an interface ISerializable

class Foo
{
    private ISerrialisable data;
    ...
}

So as long as the object is serrializable you should be able to use it with clipboard.

于 2013-08-09T08:52:11.850 回答