我正在使用 NetworkStream 在 C# 中实现通信协议(Modbus):程序需要编写小数据包(命令)并随后从连接的 TCP 套接字读取响应(几个字节)。在处理像 FileStream 或 NetworkStream 这样的流时,我通常使用完整的异步解决方案,如下所示(示例代码):
Task.Run(async () =>
{
while (true)
{
await stream.WriteAsync(cmdBuffer, ...);
await stream.ReadAsync(responseBuffer, ...);
//handle response....
}
});
但我想知道普通同步读/写(在这种特定情况下,即非常频繁地读/写小数据包)是否可以工作几乎相同:
var thread = new Thread(new ThreadStart(this.DoWork));
thread.Start();
private void DoWork()
{
stream.Write(cmdBuffer, ...);
stream.Read(responseBuffer, ...);
//handle response....
}
我说得对,在这种情况下异步/等待没有太大区别?