我需要两个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 :(得分:0)
这是一个线程问题。您应该向组件供应商寻求帮助,听起来他们没有正确设置ThreadingModel注册表项。但是你可能得到的回应是“不要从工作线程中使用它们,只能从STA线程中使用它们”。这对于ActiveX控件来说非常常见。