как изящно остановить синхронизированную фоновую задачу - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь аккуратно остановить синхронизированную фоновую задачу, и код, с которым я пытаюсь это сделать, -

public Task StopAsync(CancellationToken cancellationToken)
    {
        //to stop timer from making any further calls to ProcessFailures
        _timer?.Change(Timeout.Infinite, 0);

        bool isGracefullStopStarted = false;
        while (_isProcessing)
        {
            if (!isGracefullStopStarted)
            {
                string text =string.Format("worker service stopping gracefully at : {0}", DateTimeOffset.Now);
                System.IO.File.WriteAllText(@"C:\PCF\WriteText\txt.txt", text);
            }
            isGracefullStopStarted = true;
        }
        string text1 = string.Format("worker service stopped at : {0}", DateTimeOffset.Now);
        System.IO.File.WriteAllText(@"C:\PCF\WriteText\txt.txt", text1);
    }

_isProcessing будет иметь значение false, когда выполнение текущей работы завершено (Task.Delay (20000)). Поэтому я ожидаю, что пока l oop будет работать до тех пор, пока обработка не будет завершена, когда я отлаживаю элемент управления, до тех пор пока l oop только один раз, и после этого служба останавливается. что я тут не понимаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...