我的应用程序通常在 10-20 个线程上运行,这些线程几乎每秒都会向 GUI 发送事件以更新某些控件。
当用户关闭这些中间的应用程序时,与这些事件相关的所有更新都会导致几次随机崩溃。主要是ObjectDisposedException
和NullReferenceException
。
由于事件已经抛出但尚未由 .NET Framework 处理,因此它们不处于我可以取消它们的状态。
我不太确定处理这个问题的最佳方法。目前我只是吞下例外的例外。
我的应用程序通常在 10-20 个线程上运行,这些线程几乎每秒都会向 GUI 发送事件以更新某些控件。
当用户关闭这些中间的应用程序时,与这些事件相关的所有更新都会导致几次随机崩溃。主要是ObjectDisposedException
和NullReferenceException
。
由于事件已经抛出但尚未由 .NET Framework 处理,因此它们不处于我可以取消它们的状态。
我不太确定处理这个问题的最佳方法。目前我只是吞下例外的例外。
几个选项:
FormClosing
?)时,您可以开始干净地退出线程(通过某处的标志)除了Marc Gravell 的建议之外,还有一些其他内容:
Environment.HasShutdownStarted
在执行任何可能导致ObjectDisposed
异常的操作之前进行检查.IsDisposed
(所有窗体和控件都有它)