DataWriter / DataReader Relation - PullRequest
       3

DataWriter / DataReader Relation

0 голосов
/ 25 октября 2018

Я немного озадачен тем, как эти двое влияют друг на друга после прочтения документации здесь https://docs.microsoft.com/en-us/uwp/api/windows.storage.streams.datareader.

Если бы я должен был DetachStream и Dispose на записывающем устройстве, читатель в итоге оказался бы нулевым?Я вижу это отмеченным в контролере качества кодовой базы.

writer = new DataWriter(_device.OutputStream);
writer.WriteString(command);
await writer.StoreAsync();
writer.DetachStream();

reader = new DataReader(_device.InputStream);
IAsyncOperation<uint> taskLoad = reader.LoadAsync(10000);
taskLoad.AsTask().Wait();

var bytesToRead = taskLoad.GetResults();
var response = reader.ReadString(bytesToRead);

reader.DetachStream();
reader = null;

Обработка исключений ..

if (writer != null) {
    writer.DetachStream();
    writer.Dispose();
}

if (reader != null) {
    reader.DetachStream();
    reader.Dispose();
}

Видимо, читатель всегда равен нулю в этом случае?

1 Ответ

0 голосов
/ 25 октября 2018

Итак, что вы делаете, так это располагаете ридер и устанавливаете его в null.

После этого вы делаете то же самое в блоке finally.Блок finally всегда запускается, даже если попытка завершается неудачно и входит в блок catch.Поэтому нет необходимости иметь

reader.DetachStream();
reader = null;

в вашем блоке try.просто удалите его из блока try, и проверка качества базы кода перестанет жаловаться.

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