webservice-Async call - PullRequest
       4

webservice-Async call

0 голосов
/ 16 марта 2011

У меня запущен веб-сервис, и один из его методов не возвращается сразу при вызове. Возвращается, когда у него есть данные. Как только он возвращается, клиент снова вызывает его, так что клиенту будут предоставляться данные всякий раз, когда у службы есть данные. Это чтобы избежать голосования. Но проблема в том, что он отлично работает в эмуляторе, тогда как в устройстве, хотя web-служба не возвращает, клиент попадает в функцию ниже, перезапуская функцию в нулевом исключении.

public string Endgetstatus(System.IAsyncResult result) 
{
    object[] _args = new object[0];
    string _result = ((string)(base.EndInvoke("getstatus", _args, result)));
    return _result;
}

Вот как я вызываю асинхронную функцию, которая возвращает, когда у нее есть данные, иначе она не вернется.

client.getstatusCompleted += new EventHandler<getstatusCompletedEventArgs>(updatereceived);

client.getstatusAsync();//this returns only when it has data

Разрывает ли устройство какое-либо открытое соединение через определенный промежуток времени и заставляет клиента вызывать функцию Endgetstatus? Я установил время ожидания на 23 часа

BasicHttpBinding binding= new System.ServiceModel.BasicHttpBinding();
TimeSpan interval = new TimeSpan(23, 14, 18);
binding.ReceiveTimeout = interval;
binding.SendTimeout = interval;

Через одну минуту клиент попадает в

public string Endgetstatus(System.IAsyncResult result) {

, приводящий к исключению аргумента null, хотя веб-служба не возвращает.

Может кто-нибудь дать мне знать, что я должен сделать, чтобы работать в устройстве, как оно работает на эмуляторе?

Обратите внимание, что это касается Windows Phone 7 и Silverlight C #

1 Ответ

0 голосов
/ 16 марта 2011

Я полагаю, что по умолчанию WebClient будет отключен через 1 минуту.
Разница между эмулятором и поведением устройства - это просто платформа или вы делаете что-то по-другому.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...