Драйвер блокирует основной поток

Есть библиотека драйвера известного производителя контрольно-кассового оборудования(далее ккм). Проблема в том, что она может работать только из основного потока(по крайней мере по моим наблюдениям), из-за чего собственно сама программа подвисает, пока ккм обрабатывает запрос, а это может занимать до 10 секунд. Сама ошибка при попытке вызывать не в основном потоке:

System.InvalidCastException: "Невозможно привести COM-объект типа "System.__ComObject" к интерфейсному типу "DrvFRLib.IDrvFR49". Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID "{043489E2-2E2F-4404-8DCF-9FD484D29E33}" возвратил следующую ошибку: Неопознанная ошибка (Исключение из HRESULT: 0x80004005 (E_FAIL))."

Также приходится костылить, когда приходит внешний запрос и он идет в доп. поток:

Application.Current.Dispatcher.Invoke(....);

Вот и собственно, что можно попробовать сделать? Буду благодарен любым мнениям.


Ответы (0 шт):