Есть прога на C#, которая использует COM объект.
При создании проекта Windows Applications и использовании этого объекта всё нормально.
Сделал сервис на C#, который практически аналогичен первому проекту, компилится всё нормально, но во время запуска сервиса появляется следующая ошибка:
Service cannot be started. System.InvalidCastException: QueryInterface for interface RTCCore.IRTCClient failed.
at RTCCore.RTCClientClass.Initialize()
at LCSStatusService.RTCPresenceCore..ctor(IRTCPresenceUI presenceUI)
at LCSStatusService.LCSStatusService.OnStart(String[] args)
at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
Как такое победить?
Здравствуйте, Аноним, Вы писали:
А>Есть прога на C#, которая использует COM объект.
А>При создании проекта Windows Applications и использовании этого объекта всё нормально.
А>Сделал сервис на C#, который практически аналогичен первому проекту, компилится всё нормально, но во время запуска сервиса появляется следующая ошибка:
А>Как такое победить?
Проверь потоковые модели. У Windows.Forms это обычно STA, а у сервиса MTA. Если текущая модель и модель объекта не совпадут, а маршаллиг осуществить нельзя (например tlb не зарегистрирована или интерфейс локальный), то будет InvalidCastException
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Здравствуйте, Аноним, Вы писали:
А>>Есть прога на C#, которая использует COM объект.
А>>При создании проекта Windows Applications и использовании этого объекта всё нормально.
А>>Сделал сервис на C#, который практически аналогичен первому проекту, компилится всё нормально, но во время запуска сервиса появляется следующая ошибка:
А>>Как такое победить?
TK>Проверь потоковые модели. У Windows.Forms это обычно STA, а у сервиса MTA. Если текущая модель и модель объекта не совпадут, а маршаллиг осуществить нельзя (например tlb не зарегистрирована или интерфейс локальный), то будет InvalidCastException
Здравствуйте, у мена тоже такая проблема, я нарисал DLL на C# который использует COM объект а сервис использует мой DLL, сервиса я не писал. как мне решит проблему?