我在家里的桌面上有一个 24/7 全天候运行的应用程序,它使用 websocket 库连接到它的服务(这部分不是我写的,但我有代码),它很少抛出 NullReferenceException
在此行:
socket?.Dispose();
由于服务的不可靠性,它被设置为大约每 3-5 分钟重新连接一次。所以假设每天这条线可能被执行 ~300 次。在过去 3 年中,这种情况可能每 3-4 个月发生一次。该应用程序已定期更新到最新版本的 c# 框架,从 4.5 开始。
在什么情况下会发生此异常?
最佳答案
documentation声明对于 obj?.DoSomething()
,强调我的:
The new way [using ?.] is thread-safe because the compiler generates code to evaluate [obj] one time only, keeping the result in a temporary variable.
所以问题只能是Dispose()
的执行引起的,无论是框架的一部分还是你自己的实现。
关于c# - 为什么我有时会在 ?. 之后得到 Null 引用异常。查看?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49771769/