Сообщение Re: Проблема с инициализацией COM от 02.11.2022 9:51
Изменено 02.11.2022 9:51 bnk
Re: Проблема с инициализацией COM
Здравствуйте, Melamed, Вы писали:
M>Есть ли способ инициализации COM системы для нескольких потоках и чтоб функция RegisterDragDrop не возвращала ошибку?
COM необходимо инициализировать в каждом потоке, который его использует (каждый поток использует его независимо от других).
Если ты работаешь с пользовательским интерфейсом (UI), то общепринятая стратегия — работа с UI ним (только) из главного потока приложения.
Не очень понятно зачем тебе несколько потоков для drag-n-drop (перетаскивания)
Если ты используешь DirectShow в каком-то другом потоке, ты можешь его инициализировать его там как тебе надо,
это не повлияет на основной поток. То есть, COM инициализируется (и работает) не "для приложения" а "для потока".
M>Есть ли способ инициализации COM системы для нескольких потоках и чтоб функция RegisterDragDrop не возвращала ошибку?
COM необходимо инициализировать в каждом потоке, который его использует (каждый поток использует его независимо от других).
Если ты работаешь с пользовательским интерфейсом (UI), то общепринятая стратегия — работа с UI ним (только) из главного потока приложения.
Не очень понятно зачем тебе несколько потоков для drag-n-drop (перетаскивания)
Если ты используешь DirectShow в каком-то другом потоке, ты можешь его инициализировать его там как тебе надо,
это не повлияет на основной поток. То есть, COM инициализируется (и работает) не "для приложения" а "для потока".
Re: Проблема с инициализацией COM
Здравствуйте, Melamed, Вы писали:
M>Есть ли способ инициализации COM системы для нескольких потоках и чтоб функция RegisterDragDrop не возвращала ошибку?
COM необходимо инициализировать в каждом потоке, который его использует (каждый поток использует его независимо от других).
Если ты работаешь с пользовательским интерфейсом (UI), то общепринятая стратегия — работа с UI (только) из главного потока приложения.
Не очень понятно зачем тебе несколько потоков для drag-n-drop (перетаскивания)
Если ты используешь DirectShow в каком-то другом потоке, ты можешь его инициализировать его там как тебе надо,
это не повлияет на основной поток. То есть, COM инициализируется (и работает) не "для приложения" а "для потока".
M>Есть ли способ инициализации COM системы для нескольких потоках и чтоб функция RegisterDragDrop не возвращала ошибку?
COM необходимо инициализировать в каждом потоке, который его использует (каждый поток использует его независимо от других).
Если ты работаешь с пользовательским интерфейсом (UI), то общепринятая стратегия — работа с UI (только) из главного потока приложения.
Не очень понятно зачем тебе несколько потоков для drag-n-drop (перетаскивания)
Если ты используешь DirectShow в каком-то другом потоке, ты можешь его инициализировать его там как тебе надо,
это не повлияет на основной поток. То есть, COM инициализируется (и работает) не "для приложения" а "для потока".