首先,我的问题非常复杂(对我来说),我试着解释一下。
我有一个使用NFC标签的WPF应用程序。几天前,这段代码工作正常,但现在有些事情搞砸了。 首先,我有一种从NFC标签读取数据的方法,如下所示:
private void NFCCard_OnCardInserted()
{
CheckCard();
}
private bool CheckCard()
{
try
{
lock (_object)
{
NFCCard.Connect(CardReader, SHARE.Shared, PROTOCOL.T0orT1);
APDUPlayer player = new APDUPlayer(ApduListFile, NFCCard);
if (nfcFunction.NFCLogin(player))
{
string TempCompanyID = "";
//--Read data
}
DateTime cartOpenedDate = Convert.ToDateTime(OpenedDate);
if (CartNo == "" || CompanyID.ToString() == "" || Convert.ToInt32(limit) <= 0 || isactive == "False" || cartOpenedDate.ToShortDateString() != DateTime.Today.ToShortDateString() || CartType == "Staff")
{
Dispatcher.BeginInvoke(new Action(delegate
{
ShowCardNo(txtCardNo, "Geçersiz Kart!");
}));
}
else
{
//-- Some internal code
}
}
}
catch (Exception exc)
{
StationSession.WriteLog("write log bla bla", exc);
}
}
现在有趣的是,当我检查VS两个相同线程的线程窗口时,尝试同时运行NFCCard_OnCardInserted()方法。
出于这个原因,我把锁状态,但问题是这种方法发射两次。而且它给我带来了大麻烦,因为卡交易时间现在是双倍的(一些交易差不多是3秒。我无法向人们解释,你会在购物车读卡车上等待这样:/)。顺便说一下,我检查整个页面的方法参考,这个代码应该使用这个方法。
NFCCard.OnCardInserted += new CardInsertedEventHandler(NFCCard_OnCardInserted);
那么如何在没有解决方法的情况下解决此问题。因为我有几个使用NFC购物车线程的页面和方法。我需要找到解决这个问题的明确方法。感谢。