c# - 为什么我有时会在 ?. 之后得到 Null 引用异常。查看?

标签 c#

我在家里的桌面上有一个 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/

相关文章:

c# - string.GetHashCode() 唯一性和冲突

C# 正则表达式匹配并换行多行

c# - 如何反序列化 JSON 中名为 "default"的 JSON 字段? C#

c# - 如何匹配包含多个字符的单词?

c# - 尽管 CanUserSortColumns ="true",但使用 ItemsSource 填充的 DataGrid 无法排序

c# - 无法在 System.Boolean 上进行测试

c# - 更改文本到语音语音的性别

c# - 在 C# 中的文本框中粘贴限制

c# - 一个连接执行多条sql命令好,还是每次都重新连接好?

c# - 如何在TextBox中实现自定义撤销