Microsoft объясняет, почему буфер обмена Windows иногда не может скопировать данные

Microsoft объясняет, почему буфер обмена Windows иногда не может скопировать данные

Если вы хотите скопировать и вставить данные в Windows, буфер обмена Windows сделает эту задачу быстрой и простой (Ctrl+C, затем Ctrl+V), но иногда это не работает, и теперь Microsoft объяснила, почему.

В своем блоге разработчиков, Рэймонд Чен из Microsoft рассказывает, как клиент хотел скопировать более 300 000 строк электронной таблицы Excel, используя буфер обмена Windows, но попытка доступа к данным после копирования не удалась и вместо этого было возвращено NULL (что означает отсутствие значения). Вы можете подумать, что это связано с огромным объемом копируемых данных, но Чен объясняет, что проблема не в размере. На самом деле размер данных, которые вы можете скопировать в буфер обмена, ограничен только объемом доступной памяти и адресного пространства на вашем настольном ПК или ноутбуке.

Вместо этого это сводится к причуде того, как Windows делает данные доступными в буфере обмена. Данные могут быть либо переданы непосредственно в буфер обмена, либо используется «отложенный рендеринг буфера обмена».

Чен объясняет: «Вместо того, чтобы помещать данные в буфер обмена, вы говорите: „Если кто-нибудь спросит, дайте мне знать, и я предоставлю данные“. Это известно как задержка рендеринга буфера обмена, и это обычная оптимизация для форматов данных, которые редко используются или дороги в производстве».

Когда запрашиваются данные, хранящиеся с использованием метода задержки рендеринга буфера обмена, Windows предоставляет 30 секунд для возврата этих данных в правильном формате. Если это не так, запрос отменяется, и вместо этого действие возвращает значение NULL.

Это то, что происходит с попыткой клиента скопировать строки электронной таблицы Excel. Пользователь запрашивал данные в форматированном текстовом формате (RTF), который Excel изначально не использует, поэтому он должен преобразовать эти 300 000 строк в формат RTF, прежде чем произойдет копирование и вставка. Преобразование занимает больше 30 секунд, поскольку строк очень много, а это означает, что время ожидания операции истекло, а данные не копируются.

Поэтому, если вы когда-либо пытались скопировать большой объем данных с помощью буфера обмена Windows, и это не сработало, это может объяснить, почему. Чен заканчивает свой пост в блоге, заявляя: «В следующий раз мы посмотрим, что мы можем сделать, чтобы продлить этот тайм-аут», поэтому будущее обновление Windows может исправить эту нишевую, но раздражающую ошибку.