Я пытаюсь аккуратно остановить синхронизированную фоновую задачу, и код, с которым я пытаюсь это сделать, -
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 только один раз, и после этого служба останавливается. что я тут не понимаю?