Почему, по мнению Microsoft, буфер обмена в Windows 11 иногда работает с перебоями…

Почему, по мнению Microsoft, буфер обмена в Windows 11 иногда работает с перебоями…, image #1

Вы не одиноки, если заметили, что история буфера обмена в Windows 11 иногда не сохраняет скопированные данные. Это происходит не всегда, но вы можете столкнуться с проблемой, если копируете слишком много данных подряд или используете такие приложения, как Excel, с большими объёмами данных.

Для тех, кто не знает, Windows 11 поставляется с полноценной историей буфера обмена, и к ней можно получить доступ с помощью сочетания клавиш Win + V. Вы можете управлять синхронизацией буфера обмена в Настройках > Системе > Буфере обмена и даже включить синхронизацию на своих устройствах, включая телефоны Android.

Почему, по мнению Microsoft, буфер обмена в Windows 11 иногда работает с перебоями…, image #2

Я всегда использую функцию истории буфера обмена Windows, потому что она мощная и в большинстве случаев справляется со своей задачей. Когда я использую приложение Phone Link для быстрого копирования изображений с моего телефона Android в буфер обмена, я могу легко извлечь их из истории буфера обмена и отредактировать в MS Paint.

Это работает, пока вы не столкнётесь с препятствием. Я заметил, что иногда в истории буфера обмена не отображается то, что я скопировал ранее. И я задаюсь вопросом: действительно ли я скопировал изображение?

Я наблюдал подобное поведение при работе в Excel.

Оказывается, это можно объяснить тем, как работает служба истории буфера обмена Windows и как некоторые приложения предоставляют данные буфера обмена.

Я нашёл несколько документов Microsoft и даже патентов, которые помогают объяснить, почему работа с буфером обмена может быть непредсказуемой.

Почему история буфера обмена в Windows 11 не всегда сохраняет всё?

Прежде всего, если вы очень быстро меняете данные в буфере обмена, история буфера обмена может не сохранить все элементы. Это происходит потому, что Windows асинхронно прослушивает уведомления об изменении буфера обмена.

Что такое асинхронность?

Асинхронность означает, что что-то происходит в фоновом режиме, а ваш код продолжает работать, не дожидаясь завершения процесса.

«Служба истории буфера обмена работает асинхронно. Она регистрируется для отслеживания изменений в буфере обмена с помощью Add­Clipboard­Format­Listener и при получении уведомления об изменении обновляет историю буфера обмена, — объяснил Рэймонд Чен, ведущий инженер Microsoft. — Однако слушатель получает уведомление асинхронно, поэтому к тому времени, когда слушатель получит сообщение WM_CLIPBOARD­UPDATE, буфер обмена может измениться во второй раз».

Если вы всё ещё не понимаете, почему асинхронность вызывает проблемы с историей буфера обмена, выслушайте меня.

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

Например, если вы скопировали изображение из приложения Phone Link или другого приложения, а затем сразу же скопировали ячейку из Excel и открыли историю буфера обмена (Windows + V), вы можете даже не увидеть изображение.

Служба истории буфера обмена — это отдельный процесс, и хотя он пытается записывать изменения в буфере обмена, он может пропускать очень быстрые последовательные обновления. Это сделано в основном для повышения производительности, и если что-то остаётся в буфере обмена всего на долю секунды, вы (как человек) всё равно не сможете это вставить.

Я что-то скопировал, но это не было сохранено в буфере обмена Windows 11. Почему?

Я сам столкнулся с этой проблемой. Я снова использую приложение Phone Link и скопировал изображение, но оно не было сохранено. Я делаю это снова, но изображение по-прежнему не сохраняется. Такое иногда случается, когда Word загружает содержимое документа, а я пытаюсь скопировать отрывок. Он не сохраняется.

В Windows 11 некоторые приложения не сразу помещают окончательные данные в буфер обмена. Вместо этого они используют отложенный рендеринг, при котором приложение обещает предоставить данные, а затем Windows ждёт (до 30 секунд), пока приложение сгенерирует эти данные по запросу.

Это не проблема, если только приложение не зависло, не перегружено или не отвечает должным образом. В этом случае вы можете остаться ни с чем (или с отсутствующими форматами).

Почему, по мнению Microsoft, буфер обмена в Windows 11 иногда работает с перебоями…, image #3

Например, если вы откроете Excel и скопируете большой объем данных, особенно из таблицы с форматированным текстом. Excel потребуется около 30 секунд или больше, чтобы скопировать форматированные данные в буфер обмена, но этого не происходит, и в буфере обмена Windows ничего не отображается. Он пуст или содержит устаревшие данные, как показано на скриншоте ниже:

Почему, по мнению Microsoft, буфер обмена в Windows 11 иногда работает с перебоями…, image #4

30-секундный тайм-аут не является проблемой, если только приложение не зависло, не перегружено или не отвечает должным образом.

В приведённом выше примере с Excel данные не были скопированы в буфер обмена Windows 11, потому что Excel работал более 30 секунд и функция Get­Clipboard­Data не успела сработать.

В большинстве случаев буфер обмена Windows работает отлично. А у вас? Сталкивались ли вы с подобными проблемами в работе буфера обмена Windows? Напишите в комментариях ниже.

Источник: https://www.windowslatest.com

149 views·4 shares