我有一个多线程的应用程序,并且aCancellationToken
用作共享对象。每个线程都可以触发它来告诉其他线程作业已被取消。然后一个线程进行清理,并处理这样的每个对象。然后,如果线程尝试使用它,则会引发异常:
CancellationTokenSource已被释放。
在使用对象之前,如何确定它已被释放?
最佳答案
好吧,根据reflector的说法,CancellationTokenSource
有一个内部的IsDisposed
方法可以告诉你,但是由于它是内部的,你不应该调用它。
在任何情况下,如果一个线程拖出其他线程依赖的数据结构和对象,那么不要这样做。修复代码并让这些对象在其需要的时间内保持活动状态。
换句话说,在处理之前,请等待其他线程完成需要CancellationTokenSource
的操作。
关于c# - 如何找出物体已处置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5655345/