2

我有一个 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 服务异步?

4

1 回答 1

1

我认为异步进行 WCF 服务操作要好得多。这篇 MSDN 文章展示了如何做到这一点:http: //msdn.microsoft.com/en-us/library/ms730059.aspx

于 2010-03-16T05:42:45.840 回答