我得到了一个项目,在该项目中我必须使用没有表单的 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();
}
这个程序第一次运行良好,但是一旦我发出另一个请求(创建另一个线程),就没有任何数据作为数据存储在(静态类)中。
我在第一个请求送达后提出第二个请求。