È una cattiva pratica utilizzare tale ciclo? Forse è meglio usare il cronometro, o forse questa soluzione ha qualche insidia?Implementare il timeout C#
public void DoWork()
{
//do some preparation
DateTime startTime = DateTime.Now;
int rowsCount = 0;
int finalCount = getFinalCount();
do
{
Thread.Sleep(1000);
rowsCount = getRowsCount(); // gets rows count from database, rows are added by external app.
} while (rowsCount < finalCount && DateTime.Now - startTime < TimeSpan.FromMinutes(10));
}
Ho visto questo articolo Implement C# Generic Timeout, ma è troppo complesso da utilizzare in scenari semplici - è necessario pensare di sincronizzazione dei thread, è corretto per interrompere o meno e così via.
Cosa vuoi fare con Creazione di un timeout esattamente? Se dici tutto il tuo scenerio, forse possiamo offrire un modo diverso di usare. –
Correlati/duplicati: http://stackoverflow.com/questions/3195030/thread-timeout-in-c – RQDQ
Basta smettere di lavorare dopo un certo periodo di tempo - iniziare a lavorare, se funziona più di 10 minuti interrompere il lavoro. Il thread che chiama il metodo può essere bloccato. – anderhil