我正在使用與生物識別考勤設備一起工作的考勤軟件。該設備的供應商提供了一個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來處理事件?如果是的話,他們的任何工作呢?
在此先感謝。
是的,這是那種COM對象的要求[STA線程](http://stackoverflow.com/a/21684059/17034)。 –
檢查[this](http://stackoverflow.com/q/21438747/1768303)和[this](http://stackoverflow.com/q/18296834/1768303)。 – Noseratio