フォームなしで ActiveX コントロールを使用しなければならないプロジェクトが与えられました。
その ActiveX コントロールは、カード スワイパー デバイスに属しています。だから私がしなければならないことは、ブラウザクライアントがカードのスワイプデータにアクセスできる残りのサービスを作成することです.
そこで、リクエストが来るとすぐに新しい sta スレッドを作成する webservice メソッドを作成しました。この sta スレッドでは、以下のように ActiveXcontrol を作成し、静的クラスにデータを格納します。2 番目の要求についても、同じことを行います。
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();
}
初めてこのプログラムはうまくいっていますが、別の要求を行う (別のスレッドを作成する) とすぐに、(静的クラス) にデータとして何も格納されません。
最初のリクエストが提供された後、2 番目のリクエストを行います。