Pergunta

Eu tenho uma configuração de serviço WCF para controlar um leitor de impressão digital USB a partir de nossos aplicativos .NET. Isso funciona bem e posso pedir para inscrever usuários e assim por diante.

O leitor permite a identificação (diz que um usuário em particular apresentou o dedo, em vez de pedir para verificar se está presente o dedo de um usuário em particular), mas o dispositivo deve ser constantemente pesquisado enquanto no modo de identificação para seu status - quando um O usuário é detectado as alterações de status.

O que eu quero é para um aplicativo interessado notificar o serviço que deseja saber quando um usuário é identificado e fornecer um retorno de chamada que é acionado quando isso acontecer. O serviço WCF retornará imediatamente e gerará um thread em segundo plano para pesquisar continuamente o dispositivo. Essa pesquisa pode continuar por horas seguidas se ninguém tentar fazer login.

Qual é a melhor maneira de conseguir isso? Meu contrato de serviço está atualmente definido da seguinte forma:

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

No meu BeginIdentification() Método, posso gerar facilmente um fio de trabalhador para pesquisar o dispositivo ou é mais fácil tornar o serviço WCF assíncrono?

Foi útil?

Solução

Eu acho que é muito melhor tornar a operação de serviço do WCF de forma assíncrona. Este artigo do MSDN mostra como fazer isso:http://msdn.microsoft.com/en-us/library/ms730059.aspx.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top