如何找出一个物体已被处置?

Xaq*_*ron 6 c# dispose cancellationtokensource

我有一个多线程应用程序,一个CancellationToken用作共享对象.每个线程都可以触发它以告诉其他线程该作业被取消.然后一个线程进行清理并像这样处理每个对象CancellationToken.然后,如果线程尝试使用它,则会引发异常:

CancellationTokenSource已被处理.

在使用之前如何找到对象?

ang*_*son 4

嗯,根据 Reflector 的说法,CancellationTokenSource有一个内部IsDisposed方法可以告诉你,但由于它是内部的,所以你不应该调用它。

无论如何,如果一个线程拉出其​​他线程所依赖的数据结构和对象,那么就不要这样做。修复您的代码并让这些对象在需要时保持活动状态。

换句话说,在CancellationTokenSource释放它之前,请等待其他线程完成对它的需要。