- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
while (!e.Cancel) //цикл получения остальных страниц
{
//прерывание получения данных (если заказали)
if (worker.CancellationPending)
{
e.Cancel = true;
break;
}
//получение очередной странцы
if (page == null)
page = _gateway.GetTrackPage(id, pageID);
if (page != null)
{
if (page.Type == PageType.NotReady) //если страница не готова - на следующий круг
{
page = null;
for (int i = 0; i < waitTimeout && !worker.CancellationPending; i++) //ожидание таймаута
Thread.Sleep(1000);
waitTimeout *= 2; //наращивание таймаута с каждым получением NotReady
if (waitTimeout > 10)
waitTimeout = 10;
}
.........
}
.........
}
Опрашиваем в цикле сервер вызовами _gateway.GetTrackPage. Если сервер отвечает что не готов page.Type == PageType.NotReady, то имеем креатив на тему увеличения интервала опроса...
guest 02.03.2010 14:46 # 0
guest 28.03.2010 23:57 # 0