【发布时间】:2009-11-24 19:10:49
【问题描述】:
我可能对这种线程场景有很大的误解,但这就是我要问的原因。
在以下情况下会/可能发生什么(假设 C# 线程)?注意:这个场景被简化为核心问题,额外的功能被忽略了。
我有 2 个对象,a 和 b,它们分别是类 A 和 B 的实例; “b”是“a”的成员。
'b' 正在运行一个处理循环,并且有一些其他活动在不断地做某事。在某一时刻,“b”检测到一种情况,导致它向“a”发送事件。当 'a' 收到此事件时,它会执行以下代码:
void b_eventFoo()
{
b.UnhookEvents();//clears the delegate that truggered this event function
this.b = new B();
b.HookEvents(this);//connects the new b object to this A
}
旧的“B”对象会发生什么?原始的“b”仍在进行一些处理,并且触发事件的线程可能仍在执行。我对线程的理解不够深入,无法预测这种情况的结果。
这有关系吗?
如果我需要澄清任何事情,请告诉我。
【问题讨论】:
标签: c# multithreading thread-safety