2010-09-17 2 views
0

У меня есть два сервера ActiveX, которые мне нужны для обработки его событий. первый, с которым мне пришлось работать без проблем, но со вторым я получаю сообщение об ошибке, когда пытаюсь назначить новое событие. Тот, который работает код ниже:Ошибка при попытке обработать событие ActiveX

public delegate void ICwGetXEvents_OnCommandExEventHandler(uint CommandW, uint CommandL, string CommandText); 

    public CwGet.CwGetXClass ax_CwGet; 

    //event 
     public void CwGetXEvents_OnCommandExEventHandler(uint CommandW, uint CommandL, string CommandText) 
     { 

      if (CommandL == 4) 
      { 
       //some code 
      } 


     } 

//ok here is how I assign the controls and event: 

ax_CwGet = new CwGetXClass(); 
ax_CwGet.OnCommandEx += CwGetXEvents_OnCommandExEventHandler; 

Ok со вторым контролем (кстати он был создан по той же компании) Я стараюсь то же самое:

public delegate void ITrueTtyXEvents_OnCallsignEventHandler(string Call); 
public truetty.TrueTtyXClass ax_truetty; 

//event 
    public void TrueTtyXEvents_OnCallsignEventHandler(string Call) 
     { 
      //somecode 
     } 

ax_truetty = new TrueTtyXClass(); 
ax_truetty.OnCallsign+= TrueTtyXEvents_OnCallsignEventHandler; 

Однако, когда я создаю новый объект ActiveX, который работает, но когда я иду, чтобы назначить событие я получаю эту ошибку:

«исходящий вызов не может быть сделано, так как приложения диспетчеризации входного синхронного вызова (исключение из HRESULT:. 0x8001010D (RPC_E_CANTCALLOUT_ININPUTSYNCCALL)) "

было интересно, если кто-то может мне точку в правильном направлении ..

Mike

ответ

0

Это проблема многопоточности. Вы должны попросить поставщика компонента помочь в этом, похоже, что они не установили раздел реестра ThreadingModel должным образом. Но вероятный ответ, который вы получите, - «не использовать их из рабочего потока, только из потока STA». Это очень часто используется для элементов управления ActiveX.

Смежные вопросы