что всё-таки передаётся в reader.AdvanceTo.
Сигнатуры перегрузок выглядят как
AdvanceTo (SequencePosition consumed);
AdvanceTo (SequencePosition consumed, SequencePosition examined);
Но почему-то в примерах для полного поглощения буфера на MSDN указывается так:
// Tell the PipeReader how much of the buffer has been consumed.
reader.AdvanceTo(buffer.Start, buffer.End);
WTF?
Мне же надо обработать часть буфера, а остатком будет заниматься другой вызов
void ConsumeData(int size){
var read = await Reader.ReadAsync(cancellation.Token);
if (read.Buffer.Length >= size) {
// handle data
Reader.AdvanceTo(read.Buffer.GetPosition(size));
}
}
при втором вызове я получаю исключение System.InvalidOperationException: Reading is already in progress.
как этим вообще правильно пользоваться?
Вообще, тесты помогают порой разобраться)
Обсуждают сегодня