我有一个WCF服务设置来控制我们的.Net应用程序中的USB指纹识别器。这工作正常,我可以要求它注册用户等。
阅读器允许识别(它告诉您特定用户已经展示了他们的手指,而不是要求它验证特定用户的手指是否存在),但是在识别模式下必须不断地轮询设备以查看其状态 - 当检测到用户状态发生变化时。
我想要的是感兴趣的应用程序通知服务它想知道何时识别用户,并提供在发生这种情况时触发的回调。 WCF服务将立即返回并在后台生成一个线程以持续轮询设备。如果没有人试图登录,这种轮询可以一次持续数小时。
实现这一目标的最佳方法是什么?我的服务合同目前定义如下:
[ServiceContract (CallbackContract=typeof(IBiometricCallback))]
public interface IBiometricWcfService
{
...
[OperationContract (IsOneWay = true)]
void BeginIdentification();
...
}
public interface IBiometricCallback
{
...
[OperationContract(IsOneWay = true)]
void IdentificationFinished(int aUserId, string aMessage, bool aSuccess);
...
}
在我的BeginIdentification()
方法中,我可以轻松地生成工作线程来轮询设备,还是更容易使WCF服务异步?
答案 0 :(得分:1)
我认为以异步方式进行WCF服务操作要好得多。此MSDN文章介绍了如何执行此操作:http://msdn.microsoft.com/en-us/library/ms730059.aspx。