2015-05-18 4 views
0

Я делаю запрос на сервер в течение 25 секунд, если что-то происходит, соединение останавливается, и я получаю свои значения, если ничего - я получаю json с пустым полем, когда время завершено. Как я могу повторить свою просьбу в обоих случаях? К этому моменту я использовал кнопку для каждого запроса.Как повторить запрос/(сделать цикл)?

string connect_lp = "http://" + response.response.server + "?act=a_check&key=" + response.response.key + "&ts=" + response.response.ts + "&wait=25&mode=2"; 
    string json_lp = client.DownloadString(connect_lp); 
    RootObject response_lp = (RootObject)json_serializer.Deserialize(json_lp, typeof(RootObject)); 
+1

ли это только должно произойти навсегда? Как пользователь останавливает цикл, когда захочет? – pquest

+0

@pquest Я кодирую код noob и участвую в работе с API. Я хочу проверить, есть ли новые почтовые ящики сообщений (в социальной сети). Поэтому я думаю, что это должно быть навсегда. –

+0

Вы выполняете цикл, создавая цикл. Петли работают, выполняя условие. Похоже, вы уже знаете это условие, так что сделайте цикл. 'while',' for', 'do' .... забрать свой яд. – TyCobb

ответ

1

если вы просто постоянно опроса навсегда данных или что-то, использовать цикл

while (true) 
{ 
    // code goes here 
} 

. Если вы просто опрос, пока определенное условие не существует, попробуйте делать/время цикла:

do { 
    // some stuff 
} while (!condition); 

Красота сделай/время цикла является то, что содержание цикла будет всегда быть выполнен по крайней мере один раз (обратите внимание, как проверка while находится в нижней части цикла). Сравните это с традиционным циклом while, где сначала выполняется проверка, и поэтому тело цикла никогда не может быть запущено вообще.

Так что в вашем случае, вы можете что-то вроде:

string connect_lp; 
string json_lp; 
RootObject response_lp; 

do { 
    connect_lp = "http://" + response.response.server + "?act=a_check&key=" + response.response.key + "&ts=" + response.response.ts + "&wait=25&mode=2"; 
    json_lp = client.DownloadString(connect_lp); 
    response_lp = (RootObject)json_serializer.Deserialize(json_lp, typeof(RootObject)); 
    // do more stuff 
} while (response_ip.IsNotEmpty()); // or whatever.