Я работаю над консольным приложением, которое будет планироваться и запускаться с установленными интервалами, скажем, каждые 30 минут. Его единственное назначение - запросить веб-службу для обновления пакета строк базы данных.
API веб-службы рекомендует вызывать каждые 30 секунд и устанавливать тайм-аут после установленного интервала. Следующий псевдокод приведен в качестве примера:
listId := updateList(<list of terms>)
LOOP
WHILE NOT isUpdatingComplete(listId)
END LOOP
statuses := getStatuses(“LIST_ID = {listId}”)
Я примерно закодировал это в C # как:
int callCount = 0;
while( callCount < 5 && !client.isUpdateComplete(listId, out messages) )
{
listId = client.updateList(options, terms, out messages);
callCount++;
Thread.Sleep(30000);
}
// Get resulting status...
Можно ли в этой ситуации использовать Thread.Sleep ()? Я знаю, что это, как правило, не очень хорошая практика, но из прочтения причин не использовать это кажется приемлемым.
Спасибо.