2010-03-08 3 views
2

У меня есть настройка службы WCF для управления считывателем отпечатков USB из наших приложений .Net. Это прекрасно работает, и я могу попросить его зарегистрировать пользователей и так далее.WCF Асинхронная настройка обратного вызова для опробованного устройства

Читатель позволяет идентифицировать (он сообщает вам, что конкретный пользователь представил свой палец, а не просил его проверить наличие пальца конкретного пользователя), но устройство должно постоянно проверяться в режиме идентификации для его status - когда пользователь обнаружен, состояние изменяется.

Я хочу, чтобы заинтересованное приложение уведомляло службу, которую оно хочет знать, когда пользователь идентифицирован, и обеспечивает обратный вызов, который запускается, когда это произойдет. Служба 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 службы?

ответ