2013-08-09 2 views
0

У меня есть несколько проблем с буфером Windows в моем рабочем приложении WPF. Я пытаюсь получить содержимое буфера обмена, что-то делать (без записи на этом контенте, только читать) и повторно отправить содержимое в буфер обмена. Он запускается, но после повторной отправки содержимого, если я извлекаю содержимое буфера обмена и пытаюсь читать снова, у меня есть исключение OutOfMemory.Потеря данных при отправке данных в буфер обмена Windows

После поиска, я нашел эту ссылку: http://www.grumpydev.com/2009/09/05/system-outofmemoryexception-gotcha-using-clipboard-getdata-in-wpf/

Пришло возможно из-за проблемы сериализации, я думаю, что мои данные теряют свою сериализации attribut или иначе, когда я отправить его в буфер обмена.

Вот мой код:

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 

Обратите внимание, что данные не тип моего проекта, это может быть все (фотошоп, первенствует, изображение, текст, двоичный ...)

У кого-то есть идея исправить это?

Спасибо ип аванс

ответ

0

Основываясь на ссылке вы упомянули и выводы там, он выглядит так, как будто data тип переменной должен быть помечен как [Serrializable].

Как вам это нужно, чтобы быть в значительной степени «все» вы можете попробовать использовать интерфейс ISerializable

class Foo 
{ 
    private ISerrialisable data; 
    ... 
} 

Так до тех пор, пока объект является serrializable вы должны быть в состоянии использовать его в буфер обмена.

+0

Hi, Спасибо за ваш ответ. Я пробовал то, что вы сказали, но это странно, у меня есть и MDA Excpetion, основанный на коде этого потока: http://stackoverflow.com/questions/1213074/winforms-interop-drag-drop-from-winforms- wpf Возможно, я забыл что-нибудь? –

+0

У кого-нибудь есть идея? Я заблокирован –

+0

Извините, это было мое лучшее предположение ... – oleksii