Вопрос

У меня есть настольное приложение C#, и я без проблем использую веб-службу (wsdl добавлен с помощью «добавить ссылки на службы», поэтому я создаю объект и вызываю его функции).

Теперь я хочу использовать методы длительного опроса, но не могу понять, как это сделать с точки зрения клиента.

Как настроить таймаут?Должен ли я использовать тему, посвященную этому?Есть ли пример настольного приложения C#?(не нашел)

Спасибо, дамба

Это было полезно?

Решение

У вас должна быть возможность настроить таймаут для объекта веб-службы — детали будут зависеть от того, какой именно класс он использует, но посмотрите WebClientProtocol.Timeout для примера.

Теперь вы можете либо вызвать это синхронно из выделенного потока, либо сделать асинхронный Для начала вызовите веб-службу, указав обратный вызов, который будет выполнен (вероятно, в потоке пула потоков), когда служба ответит.В этом случае вы можете обнаружить, что можете указать таймаут для самого асинхронного вызова — опять же, это будет зависеть от того, какой именно класс прокси-сервера веб-службы у вас есть.

Таким образом, вам не нужно «тратить» поток на ожидание ответа, но вы можете обнаружить, что модель асинхронного программирования труднее понять, чем синхронную.Если у вас одновременно есть только один или два таких запроса, дополнительная пара потоков вряд ли станет проблемой.Если вы ждете ответов от 500 различных сервисов, это другое дело, и асинхронная модель определенно подойдет вам.

Другие советы

О проблемах с потоками см. ответ Джона.

Для проблемы тайм-аута вот решение:В версии 2008, когда я добавляю «ссылку на службу» из wsdl, по умолчанию она будет использовать WCF, и я не могу найти, как установить с ее помощью значение тайм-аута.

Итак, щелкнув правой кнопкой мыши по ссылкам на службы, мне нужно выбрать «веб-ссылки» (дополнительно/добавить веб-ссылку).Таким образом, он будет использовать только «обычные» веб-сервисы и будет доступен параметр Timeout.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top