Реализовать тайм-аут C #

Это плохая практика - использовать такой цикл while? Может быть, лучше использовать секундомер, или, может быть, это решение имеет некоторые подводные камни?

    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));

    }

Я видел эту статью Реализовать общий тайм-аут C # , но это слишком сложно для использования в простых сценариях - вам нужно подумать о синхронизации потоков, следует ли их прерывать или нет, и так далее.

7
задан Community 23 May 2017 в 12:33
поделиться