Pergunta

Eu tenho um aplicativo de desktop C# e consumo um serviço da web sem problemas (o WSDL adicionado por "Adicionar referências de serviço", então crio um objeto e chamo suas funções).

Agora, quero usar técnicas de pesquisa longa, mas não consigo descobrir como fazer isso da perspectiva do cliente.

Como configurar o tempo limite? Devo usar um tópico dedicado a isso? Existe algum exemplo para um aplicativo de desktop C#? (não encontrei nenhum)

Obrigado, barragem

Foi útil?

Solução

Você deve configurar o tempo limite no objeto de serviço da web - os detalhes dependerão exatamente de qual classe está usando, mas veja WebClientProtocol.Timeout Por exemplo.

Agora você pode chamar isso de maneira síncrona de um tópico dedicado, ou pode fazer um assíncrono Ligue para o serviço da web para começar, especificando um retorno de chamada a ser executado (provavelmente em um thread do pool de threads) quando o serviço responder. Nesse caso, você pode descobrir que pode especificar o tempo limite da chamada assíncrona - novamente, dependerá exatamente de que tipo de classe de proxy de serviço da web você tem.

Dessa forma, você não precisa "desperdiçar" um tópico apenas esperando a resposta - mas você pode achar que o modelo de programação assíncrono é mais difícil de entender do que o síncrono. Se você tem apenas uma ou duas dessas solicitações a qualquer momento, é improvável que os dois threads sejam um problema. Se você está esperando respostas de 500 serviços diferentes, esse é um assunto diferente e o modelo assíncrono seria definitivamente o caminho a percorrer.

Outras dicas

Para problemas de encadeamento, consulte a resposta de Jon.

Para o problema do tempo limite, aqui está a solução: no VS 2008, quando adiciono uma "referência de serviço" de um WSDL, ele usará o WCF por padrão e não consigo encontrar como definir um valor de tempo limite.

Portanto, ao clicar com o botão direito do mouse nas referências de serviço, tenho que escolher "Referências da Web" (Advanced / Add Web Reference). Dessa forma, ele usará apenas os serviços da Web "normais" e o parâmetro de tempo limite está disponível.

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