Обработка ресурсов для потоков, работающих на одном канале - PullRequest
0 голосов
/ 20 декабря 2011

Сначала я пишу в NamedPipeClientStream, затем я читаю из него.Это в основном работает.Но я не получаю правильную обработку ресурсов для StreamReader и StreamWriter.

Подход 1

using (StreamWriter sw = new StreamWriter(pipeStream))
{
  // ...
  using (StreamReader sr = new StreamReader(pipeStream))
  {
    // ...
  }
}

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

Подход 2

using (StreamWriter sw = new StreamWriter(pipeStream))
{
  // ...
}
using (StreamReader sr = new StreamReader(pipeStream))
{
  // ...
}

Теперь сервер канала в другом процессе испытывает трудности, так как соединение канала было преждевременно закрыто.

Подход 3

В другой вопрос, касающийся потоков файлов , было предложено использовать отдельный поток для Reader и Writer.Но это не может быть применено, поскольку оба должны использовать один и тот же экземпляр канала.

Так как правильно управлять потоками в этой ситуации?

1 Ответ

0 голосов
/ 20 декабря 2011

Почему бы не использовать FileStream, который может обрабатывать как чтение, так и запись в один поток?

...