Всем спасибо.
В итоге сделал так, вроде работает без ошибок:
static byte[] bytes = new byte[8192];
tcp_socket = new TcpClient(host, port);
net_stream = tcp_socket.GetStream();
static public Boolean readSocket()
{
while (net_stream.DataAvailable) {
int len = net_stream.Read(bytes, 0, bytes.Length);
read_buffer += Encoding.UTF8.GetString(bytes,0,len);
}
if (read_buffer.Length!=0)
{
//Разделение на строки
int i = read_buffer.IndexOf("\n");
if (i > -1) {
tcp_values = read_buffer.Substring(0, i + 1));
read_buffer = read_buffer.Substring(i + 1);
return true;
}
}
return false;
}