-2

我得到了一个项目,在该项目中我必须使用没有表单的 activeX 控件。

该 activex 控件属于 Card swiper 设备。所以我要做的是,创建一个休息服务,任何浏览器客户端都可以通过它访问卡的刷卡数据。

所以我创建了一个 webservice 方法,它在请求到来时创建一个新的 sta 线程。在这个 sta 线程中,我创建如下所示的 ActiveXcontrol,并将数据存储在静态类中。再次对于第二个请求,我做同样的事情。

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();
    }

这个程序第一次运行良好,但是一旦我发出另一个请求(创建另一个线程),就没有任何数据作为数据存储在(静态类)中。

我在第一个请求送达后提出第二个请求。

4

1 回答 1

1

我对您的问题的理解是:

  • 您使用新线程创建了 Swiper 类的对象。
  • 现在您正在Chipper使用服务访问数据WCF

我没有这样的硬件设备,但请你把

Thread.sleep(10000); 

while条件之后告诉我输出。

于 2012-12-17T08:21:47.573 回答