Ответ Шона правильный, но я хотел бы немного расширить, чтобы объяснить, почему это правильно:
Это на самом деле вопрос о c # 8 с использованием объявления :
Объявление использования - это объявление переменной, которому предшествует ключевое слово using. Он сообщает компилятору, что объявленная переменная должна располагаться в конце охватывающей области.
По сути, объявление using
компилируется как оператор using
, который заканчивается непосредственно перед огибающая область заканчивается. Другими словами, ваш код переводится на это:
while(!ct.IsCancellationRequested)
{
await using(var memoryStream = new MemoryStream())
{
await this.camera.CaptureImage(memoryStream, ct);
await this.storage.StoreImage(memoryStream, ct);
}
}
Теперь это очень ясно, когда распоряжается memoryStream
- в конце каждой while
итерации.