Получение ошибки при попытке обработать событие ActiveX - PullRequest
0 голосов
/ 17 сентября 2010

У меня есть два сервера 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;

Хорошо со вторым элементом управления (кстати, он был создан той же компанией), я пробую то же самое:

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

1 Ответ

0 голосов
/ 17 сентября 2010

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

...