Базовая многопоточность с StreamReader / StreamWriter - PullRequest
2 голосов
/ 06 августа 2011

Я использую StreamReader для чтения из TcpSocket и StreamWriter для записи в этот TcpSocket. Я хотел бы иметь код чтения в одном потоке и код записи в другом. Как мне сделать это потокобезопасным способом?

Если я сделаю следующее, то я думаю, что поток писателя будет заблокирован во многих случаях:

lock (tcpClient) {
    streamReader.ReadLine();
}

Вот код писателя:

lock (tcpClient) {
    streamWriter.WriteLine(line);
}

1 Ответ

3 голосов
/ 06 августа 2011

Безопасно отправлять в одном потоке и получать в другом.

Так что вы можете сделать это в один поток:

streamReader.ReadLine();

и это в другой теме:

streamWriter.WriteLine(line);

без блокировки tcpClient.

...