public bool IsConnected
{
get { return _tcpClient == null ? false : _tcpClient.Connected; }
}
抛出一个
“对象引用未设置为对象的实例。”
at
在System.Net.Sockets.TcpClient.get_Connected() 在C中的Project.ViewModel.ModbusOutputCounter.get_IsConnected():... \ ModbusOutputCounter.cs:第115行
这怎么可能,以及我们如何防止接收此异常?
编辑:
根据svk的问题,问题在于Disposing,它在Close()方法内部调用。解决方法:
return _tcpClient?.Client != null ? _tcpClient.Connected : false;
答案 0 :(得分:2)
根据reference source for TcpClient
,Connected
直接返回底层套接字的Connected
。这意味着当套接字为Connected
时,NullReferenceException
将抛出null
。虽然略读参考源,但我发现了两种情况:
TcpClient
已Dispose
d。Client
Socket
设置为null
。