在我的应用程序中,我创建了一个新的AppDomain。然后,我使用CreateInstanceAndUnwrap创建一个继承AppDomain中MarshalByRefObject的类型的实例,并将其分配给默认AppDomain中的变量。为了示例,我将调用对象" ObjectA"。
如果我错了,请纠正我,但如果我删除默认AppDomain和子AppDomain中对ObjectA的所有引用,我希望垃圾收集器收集ObjectA。但是,如果创建了ObjectA并且它会旋转一个永不退出的Thread或长时间运行的Task,我就不会期望垃圾收集器收集它。
有没有办法告诉垃圾收集器收集不同AppDomain中的对象?或者我被迫卸载AppDomain?
答案 0 :(得分:1)
如果您正在运行一个引用该对象的线程,那么您在appdomain中留下了对该对象的一个引用,直到该线程退出,您将无法收集它。
我的建议是使对象实现IDisposable
,并在调用它时取消长时间运行的任务/线程。