C# 订阅同一对象实例C的事件的多个窗体#
我在MDI中有一个表单,可以打开该表单的多个实例。在表单实例化之后,我得到了对另一个对象的引用,在本文中称之为obj_b。如果obj_b已经实例化,我只需将它的引用传递给表单,否则它将被实例化,然后传递给表单。基本上是单身。只有一个obj_b实例,有多个表单使用它。在表单方面,一旦有了对obj_b的引用,我就订阅了在obj_b的类中定义的事件。我试图实现的是让多个表单订阅单个obj_b实例事件的引发。我遇到的问题是,只有第一个表单接收事件。并非所有其他实例都是如此。如果我把它画出来,基本上是这样的:C# 订阅同一对象实例C的事件的多个窗体#,c#,winforms,events,mdi,C#,Winforms,Events,Mdi,我在MDI中有一个表单,可以打开该表单的多个实例。在表单实例化之后,我得到了对另一个对象的引用,在本文中称之为obj_b。如果obj_b已经实例化,我只需将它的引用传递给表单,否则它将被实例化,然后传递给表单。基本上是单身。只有一个obj_b实例,有多个表单使用它。在表单方面,一旦有了对obj_b的引用,我就订阅了在obj_b的类中定义的事件。我试图实现的是让多个表单订阅单个obj_b实例事件的引发。我遇到的问题是,只有第一个表单接收事件。并非所有其他实例都是如此。如果我把它画出来,基本上是这样
obja
/ \
f1 f2
只有f1正在接收事件。f2不是。关于为什么会发生这种情况,有什么想法或建议吗
对不起,我花了一点时间才弄明白如何编辑这篇文章。以下是相关代码:
public void BusinessManager()
{
myObj = SomeClassManager.GetInstance(); // This is either returning a new instance of the object or returning an already existing instance.
myObj.ResponseReceived += myObj_ResponseReceived; // This is where I subscribe to the event.
}
如何订阅它们?事件本质上只是一个接一个地调用方法的事件提供程序。如果第一个事件订阅服务器从未释放调用线程(通过引发异常或执行长时间运行的操作),则第二个订阅服务器将永远不会被调用。这里可能是这样吗?恐怕您需要向我们展示所有相关代码。请将其精简为仅与当前问题相关的内容,不要向我们展示我们不想看到的内容。基本上,这就是代码(为格式粗疏表示歉意):public void BusinessManager(){myObj=SomeClassManager.GetInstance();myObj.ResponseReceived+=myObj_ResponseReceived;}
GetInstance()中的内容代码>和myObj_响应已接收
?您可以编辑原始问题以发布代码。