Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 订阅同一对象实例C的事件的多个窗体#_C#_Winforms_Events_Mdi - Fatal编程技术网

C# 订阅同一对象实例C的事件的多个窗体#

C# 订阅同一对象实例C的事件的多个窗体#,c#,winforms,events,mdi,C#,Winforms,Events,Mdi,我在MDI中有一个表单,可以打开该表单的多个实例。在表单实例化之后,我得到了对另一个对象的引用,在本文中称之为obj_b。如果obj_b已经实例化,我只需将它的引用传递给表单,否则它将被实例化,然后传递给表单。基本上是单身。只有一个obj_b实例,有多个表单使用它。在表单方面,一旦有了对obj_b的引用,我就订阅了在obj_b的类中定义的事件。我试图实现的是让多个表单订阅单个obj_b实例事件的引发。我遇到的问题是,只有第一个表单接收事件。并非所有其他实例都是如此。如果我把它画出来,基本上是这样

我在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_响应已接收
?您可以编辑原始问题以发布代码。