Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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#_.net_Multithreading_Events_Delegates - Fatal编程技术网

C# 事件和委托,如何将其编码为两个级别?

C# 事件和委托,如何将其编码为两个级别?,c#,.net,multithreading,events,delegates,C#,.net,Multithreading,Events,Delegates,Class1在Class2中创建并调用一个方法。Class2的方法将其进度更新为Class1中的事件处理程序。但是现在Class2的方法需要调用class3中的方法。 class3如何将其方法的进度更新到class1?我是否需要将事件和代理按菊花链的方式一直链接到每个级别 (我使用MVC模式,UI类调用调用worker类的controller类。我需要在UI类中更新2个进度条。主进度条在controller方法完成时更新,子进度条在worker类中升级为循环进程。控制器在后台进程中运行,因此UI

Class1在Class2中创建并调用一个方法。Class2的方法将其进度更新为Class1中的事件处理程序。但是现在Class2的方法需要调用class3中的方法。 class3如何将其方法的进度更新到class1?我是否需要将事件和代理按菊花链的方式一直链接到每个级别


(我使用MVC模式,UI类调用调用worker类的controller类。我需要在UI类中更新2个进度条。主进度条在controller方法完成时更新,子进度条在worker类中升级为循环进程。控制器在后台进程中运行,因此UI不会挂起。)工人类向控制器报告,然后控制器将进度通知UI。工人类和UI不应该也不会相互了解。只需在工人类和控制器之间创建另一个事件对(这称为事件冒泡或事件链接,谢谢@Abel).

所以你建议我创建一个事件/委托对,工人类在其中更新控制器,第二个事件委托对,工人更新将从控制器进一步发送到UI?@high-tech credo:是的,我相信这就是Femaref的意思。它有时被称为事件冒泡,或者更准确地说,是事件链接。@Abel:好的,但我没有一个工人。这是工人1到20。用户可以运行这些工作程序中的任何一个。工人们只有一个进度条。因此,我必须向控制器添加1个事件处理程序,并向其订阅每个workers事件/委托。是吗?是的,这是对的。在创建worker时就这样做(我想它们是在控制器中生成的,带有一个循环,所以应该不会有太多麻烦)@Everyone:谢谢你的回复。(我喜欢这个网站的友好程度:D)