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