【发布时间】:2018-08-05 17:14:46
【问题描述】:
我的网络服务器中有以下语句:
using(NetworkStream networkStream = client.tcp.GetStream());
{
if (networkStream.DataAvailable)
{
using(StreamReader streamReader = new StreamReader(networkStream, true))
{
//do something
}
}
}
问题是,当我在这种情况下(或使用 StreamWriter)使用 using() 块时,会出现以下异常:
已建立的连接被您主机中的软件中止 机器
没有“使用”,它工作得很好,但我认为在 IDisposable 类上调用“使用”是一个好习惯。
编辑:单步抛出调试器看到它在这部分崩溃:
using (StreamWriter streamWriter = new StreamWriter(c.tcp.GetStream()))
{
await streamWriter.WriteLineAsync(data);
await streamWriter.FlushAsync();
}
但是变量中的所有数据都是正确的,没有null StreamWriter并且数据有值。
【问题讨论】:
-
我认为我们需要更多信息。在调试器中单步执行代码。我能想到的是,StreamReader dispose 也将带走底层流。
-
@BenHall 当然,我可以提供什么样的信息来扩展问题?我不知道采用底层流,因为如果我没记错的话,那会给出一个“ObjectDisposedException”而不是我得到的那个。
-
确实如此。你有没有通过。它到底在哪里爆炸?
-
@BenHall 我用调试时发现的东西进行了编辑
标签: c# networking