Czy używanie tej pętli jest złym rozwiązaniem? Może lepiej jest użyć stopera, a może to rozwiązanie ma pewne pułapki?Implementacja C# timeout
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));
}
Widziałem ten artykuł Implement C# Generic Timeout, ale jest zbyt złożona, aby korzystać w prostych scenariuszy - trzeba myśleć o synchronizacji wątków, jest to właściwe, aby je przerwać, czy nie i tak dalej.
Co chcesz zrobić z Tworzenie timeout dokładnie? Jeśli powiesz całe swoje scenerio, może zaoferujemy inny sposób użycia. –
Podobne/duplikat: http://stackoverflow.com/questions/3195030/thread-timeout-in-c – RQDQ
Po prostu trzeba przerwać pracę po pewnym czasie - rozpocząć pracę, jeśli trwa dłużej niż 10 minut, zatrzymaj pracę. Wątek, który wywołuje tę metodę, może zostać zablokowany. – anderhil