如何实现基于事件的触发而不是Timer

时间:2014-08-31 09:41:58

标签: c# event-handling smartcard pcsc acr122

我最近使用winscard库实现了与ACR122的通信。 我使用了一个计时器来调用所有相关的API调用 1. SCardEstablishContext 2. SCardListReaders等获取读者的状态

我将计时器的间隔时间保持为五(5)秒。因此,这会使设备状态延迟5秒。

任何人都可以向我推荐一种更好的方法,例如"基于事件的触发器"避免这种延迟并一起移除计时器。

1 个答案:

答案 0 :(得分:0)

以下是我实施的几个项目中遵循的一般方法。希望它

帮助。

1)初始化连接到系统的所有阅读器(使用apis,如

SCardEstablishContext和SCardListReaders)

2)从一个线程开始在每个读者上轮询卡片(使用类似

的api)

SCardGetStatusChange)。我会为每个读者提供一个帖子。当读卡器检测到卡

放在它上面引发事件以进行卡交易。

3)处理轮询线程引发的事件以进行卡片交易(使用apis,如

使用SCardConnect SCardTransmit)

我认为上述方法可以帮助您摆脱计时器并优化性能。