2015-10-13 38 views
1

我正在使用與生物識別考勤設備一起工作的考勤軟件。該設備的供應商提供了一個COM類庫「zemkeeper」,您必須註冊並鏈接到它。Windows服務中的COM對象的事件處理

在演示中,他們提供了他們在GUI winform應用程序中使用它,它的工作原理和它也適用於我。

zkemkeeper.CZKEMClass axCZKEM1 = new zkemkeeper.CZKEMClass(); 
bool bIsConnected = axCZKEM1.Connect_Net(txtIP.Text, Convert.ToInt32(txtPort.Text)); 

if (bIsConnected == true) 
      { 
       btnConnect.Text = "DisConnect"; 
       btnConnect.Refresh(); 
       lblState.Text = "Current State:Connected"; 
       iMachineNumber = 1;//In fact,when you are using the tcp/ip communication,this parameter will be ignored,that is any integer will all right.Here we use 1. 
       if (axCZKEM1.RegEvent(iMachineNumber, 65535))//Here you can register the realtime events that you want to be triggered(the parameters 65535 means registering all) 
       { 
        this.axCZKEM1.OnFinger += new zkemkeeper._IZKEMEvents_OnFingerEventHandler(axCZKEM1_OnFinger); 
        ... 
       } 
      } 
      else 
      { 
       axCZKEM1.GetLastError(ref idwErrorCode); 
       MessageBox.Show("Unable to connect the device,ErrorCode=" + idwErrorCode.ToString(), "Error"); 
      } 
} 

但是,當我試圖建立一個Windows服務註冊的事件根本不會觸發。我試圖使用控制檯應用程序做同樣的事情,但它也不起作用。

什麼問題?這種類型的COM對象是否需要GUI來處理事件?如果是的話,他們的任何工作呢?

在此先感謝。

+1

是的,這是那種COM對象的要求[STA線程](http://stackoverflow.com/a/21684059/17034)。 –

+0

檢查[this](http://stackoverflow.com/q/21438747/1768303)和[this](http://stackoverflow.com/q/18296834/1768303)。 – Noseratio

回答