2010-09-17 62 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控件很常見。

相關問題