【发布时间】:2013-08-27 21:33:53
【问题描述】:
假设我有ObjectA(classA),其中包含:
List<classB> bList;
现在让我们假设在每个objectB 中都有几个线程正在运行(它们不能从外部objectB 访问)threadB1 和threadB2。
现在,在此类列表的某个objectB 中,threadB2 发现objectBRemove==true。
发生这种情况时,我想终止此类对象的所有线程并将其从bList 中删除(我实际上想销毁此objectB)。
我想我可以在objectB 中发起一个事件,并订阅objectA 的方法来订阅这样的事件:
public void onObjectBRemove(object sender, EventArgs e)
{
bList.Remove((classB) sender);
}
当在objectB 的事件上升之后调用它时,应该从列表中删除objectB。然后,垃圾收集器应该注意到objectB 变为未引用并因此将其删除,同时终止所有内部线程。
这应该有效吗?这是解决手头问题的合理方法吗?
【问题讨论】:
标签: c# multithreading memory-management