2012-12-17 82 views
-2

我得到了一個項目,其中我必須使用無形式的activeX控件。處理無形式的activeX

該activex控件屬於卡片掃描儀設備。所以我需要做的是創建一個休息服務,任何瀏覽器客戶端都可以訪問卡的刷卡數據。

所以我創建了一個webservice方法,一旦請求到來就會創建一個新的sta線程。在這個sta線程中,我創建瞭如下所示的ActiveX控件並將數據存儲在靜態類中。對於第二個請求,我也是這樣做的。

try 
{ 
    axOPOSMSR1 = new AxOposMSR_CCO.AxOPOSMSR(); 
    axOPOSMSR1.CreateControl(); 
    if (axOPOSMSR1.Open("IDTECH_SECUREMAG_USBHID") == 0) 
    { 
     axOPOSMSR1.ClaimDevice(100); 
     axOPOSMSR1.DeviceEnabled = true; 
     axOPOSMSR1.DataEventEnabled = true; 
     axOPOSMSR1.DecodeData=true; 
     axOPOSMSR1.ParseDecodeData = true; 

     while (!Devicedisable && (axOPOSMSR1.Track1Data == "")) 
     { 
     } 

     axOPOSMSR1.ClearInput(); 
     axOPOSMSR1.ReleaseDevice(); 
     axOPOSMSR1.Close(); 
     axOPOSMSR1.Dispose(); 
     axOPOSMSR1.ContainingControl = null; 
     axOPOSMSR1 = null; 
     GC.Collect(); 
    } 

第一次這個節目做得很好,但只要我再拍請求(讓另一個線程)沒有得到存儲在(靜態類)的數據。

我在第一次服務後發出第二次請求。

回答

1

我所理解你的問題是:

  • 您創建組隊,探索類的對象有一個新的線程。
  • 正在使用WCF服務訪問Chipper的數據。

我沒有這樣的硬件設備,但是請你把

Thread.sleep(10000); 

while情況後,告訴我的輸出。

+0

啊哈!有用。感謝您的努力@Amit – Satish2230

+1

,但你能告訴我爲什麼發生這種情況 – Satish2230

+0

是啊,因爲在你檢查的while循環數據是原始數據,它將隨時準備,但爲了準備加密數據需要一段時間.. –