Я погуглил этот вопрос, чтобы посмотреть, что я увижу, и многие люди задавали этот вопрос, и никто из них не получил четкого ответа ...
Итак, я перешел к документации MSDN и обнаружил примечание, объясняющее, что описывают большинство людей, задавших этот вопрос ... Симптом обычно появляется, когда пользователь переключается на другое приложение во время выполнения кода. Примечание цитируется ниже со ссылкой на следующую документацию:
общий доступ ко всем приложениям для Windows
буфер обмена системы, поэтому содержимое
могут быть изменены при переключении
в другое приложение.
Объект должен быть сериализуем для него
быть помещенным в Буфер обмена. если ты
передать несериализуемый объект
Метод буфера обмена, метод потерпит неудачу
без исключения. Увидеть
System.Runtime.Serialization для более
информация о сериализации. Если твой
целевое приложение требует очень
конкретный формат данных, заголовки
добавлено к данным в сериализации
процесс может помешать применению
от распознавания ваших данных. к
сохраните свой формат данных, добавьте свой
данные в виде байтового массива в MemoryStream
и передать MemoryStream в
Метод SetData.
Класс Clipboard может использоваться только
в темах, установленных в один поток
квартира (STA) режим. Чтобы использовать это
класс, убедитесь, что ваш метод Main
помечены атрибутом STAThreadAttribute
атрибут.
Особые соображения могут быть
необходимо при использовании метафайла
формат с помощью буфера обмена. Из-за
ограничение в течении
реализация DataObject
класс, формат метафайла, используемый
.NET Framework может не распознаваться
приложениями, которые используют более старые
формат метафайла. В этом случае вы
должен взаимодействовать с Win32
Разработка приложений буфера обмена
интерфейсы (API). Для большего
информация, см. статью 323530,
«Метафайлов в буфере обмена нет
Доступно для всех приложений "в
База знаний Microsoft по адресу
http://support.microsoft.com.
http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx
Как ни странно, в этом есть смысл странного поведения, которое я заметил в одном из моих собственных приложений. У меня есть приложение, которое пишет в электронную таблицу Excel (на самом деле, для сотен из них, изменяя сотни ячеек каждая). Я вообще не использую буфер обмена, только Interop API для Excel, но когда он работает, мой буфер обмена очищается каждый раз, когда создается новая электронная таблица. В моем случае Excel работает с буфером обмена, даже если для этого нет видимых причин. Я бы отнес это к одному из тех загадочных явлений Windows, которые мы, смертные, никогда не поймем.
В любом случае, благодаря вашему вопросу, я понимаю, что понимаю мою проблему, поэтому +1 вам за помощь.