Асинхронное программирование с асинхронностью и ожиданием
Ключевые слова асинхронности и ожидания не приводят к созданию дополнительных потоков.Асинхронные методы не требуют многопоточности, потому что асинхронный метод не выполняется в своем собственном потоке.Метод выполняется в текущем контексте синхронизации и использует время в потоке, только когда метод активен.
Вам не нужен System.Threading для задач.Приведенный ниже код делает это из-за CancellationToken.
Одно отличие состоит в том, что у Задачи есть доступ к свойствам в основном потоке пользовательского интерфейса.
См. Количество.Вы даже можете написать в основной ветке, но, вероятно, не очень хорошая практика.
async Task<int> TaskDelayAsync(CancellationToken ct, IProgress<int> progress)
{
Debug.WriteLine(Quantity);
int i = 0;
while (true)
{
i++;
//Debug.WriteLine(i);
progress.Report(i);
ct.ThrowIfCancellationRequested();
await Task.Delay(500);
}
return i;
}