| Предыдущий | Следующий |
| DRAGDROP_E_INVALIDHWND | CLASS_E_NOAGGREGATION |
DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED
Что означает DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED
DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED (0x80040103) — Операция перетаскивания уже выполняется.
Код 0x80040103 относится не ко всему компоненту «OLE Drag and Drop», а к операции в области «регистрацию окна и взаимодействие IDataObject/IDropTarget». Сообщение «операция перетаскивания уже выполняется» позволяет начать с темы «concurrent, drag, attempted».
Что проверить и как подтвердить исправление
Сначала сопоставьте первый отказ с фактическими параметрами операции. Для 0x80040103 в условии «операция перетаскивания уже выполняется» воспроизведите отказ на минимальном объекте и меняйте только одно условие за запуск, чтобы отделить неверный вход от состояния системы.
Диагностика 0x80040103 должна включать HWND, поток и COM apartment, регистрацию цели, FORMATETC/STGMEDIUM и порядок DragEnter/DragOver/Drop; отдельно запишите HRESULT, HWND, IDropTarget, IErrorInfo, IDs. Для темы «concurrent, drag, attempted» при 0x80040103 важны значения именно на первом отказе, а не после обработки ошибки верхним уровнем.
Исправляя 0x80040103, меняйте только подтверждённую причину: выполняйте регистрацию и отзыв на правильном UI-потоке и соблюдайте владение объектами данных и носителями. Результат 0x80040103 с описанием «операция перетаскивания уже выполняется» должен исчезнуть на исходных данных без обхода штатной проверки.
Считайте исправление подтверждённым только после устойчивого повтора исходного сценария без результата 0x80040103 и без обхода штатных проверок.
Документация для результата 0x80040103: generic COM error codes · HRESULT values · RegisterDragDrop.
Нужно найти другой код? Найти другой код состояния или ошибки.