Sto lavorando a un'applicazione console che verrà pianificata ed eseguita a intervalli prestabiliti, ad esempio ogni 30 minuti. Il suo unico scopo è di interrogare un servizio Web per aggiornare un gruppo di righe del database.Uso accettabile di Thread.Sleep()
L'API del servizio Web consiglia di chiamare una volta ogni 30 secondi e il timeout dopo un intervallo impostato. Il seguente pseudocodice è dato a titolo di esempio:
listId := updateList(<list of terms>)
LOOP
WHILE NOT isUpdatingComplete(listId)
END LOOP
statuses := getStatuses(“LIST_ID = {listId}”)
ho codificato questo grosso modo in C# come:
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...
è ok in questa situazione per utilizzare Thread.Sleep()? Sono consapevole che non è generalmente una buona pratica, ma leggendo i motivi per non usarlo sembra un utilizzo accettabile.
Grazie.
L'uso di 'Thread.Sleep' è perfettamente accettabile –
L'applicazione della console verrà pianificata ? Perché non pianificarlo solo ogni 30 minuti, se è così? La soluzione migliore sarebbe un servizio Windows che utilizza un timer per chiamare il metodo. – Ray
Perché no? Quali sono le ragioni per non usarlo? –