2010-03-08 8 views
2

Je dispose d'une configuration de service WCF pour contrôler un lecteur d'empreintes digitales USB à partir de nos applications .Net. Cela fonctionne bien et je peux lui demander d'inscrire des utilisateurs et ainsi de suite. Le lecteur permet l'identification (il vous indique qu'un utilisateur particulier a présenté son doigt, par opposition à lui demander de vérifier que le doigt d'un utilisateur particulier est présent), mais le dispositif doit être constamment interrogé en mode d'identification pour son status - lorsqu'un utilisateur est détecté, le statut change. Ce que je veux, c'est qu'une application intéressée informe le service qu'elle veut savoir quand un utilisateur est identifié, et fournisse un rappel qui se déclenche quand cela se produit. Le service WCF retournera immédiatement et engendrera un thread en arrière-plan pour interroger continuellement le périphérique. Cette interrogation peut durer des heures à la fois si personne ne tente de se connecter.Configuration du rappel asynchrone WCF pour le périphérique interrogé

Quelle est la meilleure façon d'y parvenir? Mon contrat de service est actuellement défini comme suit:

[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); 
    ... 
} 

Dans ma méthode BeginIdentification() je peux frayer facilement un thread de travail pour interroger le dispositif, ou est-il plus facile de faire le asynchrone service WCF?

Répondre

Questions connexes