2010-09-17 74 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; 

确定第二控制(通过它是由同一家公司创建的方式),我尝试同样的事情:

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) )“

想知道如果任何人都可以在正确的方向指向我。

迈克

回答

0

这是一个线程的问题。您应该询问组件供应商以获取帮助,听起来像他们没有正确设置ThreadingModel注册表项。但是你会得到的可能的答案是“不要从工作者线程使用它们,只能从STA线程使用它们”。 ActiveX控件很常见。

相关问题