问题标签 [multicastdelegate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2707 浏览

c# - C# Delegate -- 如何首先将具有不同参数(相同类型)的多个函数绑定到一个委托,然后再触发/调用它们?

我需要一个 C# 委托来首先绑定具有不同参数(相同类型)的多个函数,然后稍后触发/调用它们。

请参阅下面的示例:

(请注意,我的实际需求要复杂得多,但同样的原则也适用——不想用业务/领域/实现/无聊的位来打扰您)。(另外,请原谅语法,如果它在某处不正确:P)

假设我有以下 4 个函数,具有相同的类型和数量的参数:

我知道由于它们具有相同的参数,我可以让 1 个代表指向所有的,对吗?

而且我知道如果我使用多播委托,那么我可以使用它来触发全部或部分委托,对吗?

例如,

然后使用委托,如下所示:-

后来,我可以这样使用它:

现在,这将触发具有相同参数 10 和 20 的所有函数。

我的要求是有一个多演员委托,在那里我可以添加我想要的所有功能,但它们有不同的参数。

当我指定参数时,它们不应该被触发/调用,相反,它们应该稍后被调用/触发,但是完全按照我链接/链接它们的顺序。

例如:我想做这样的事情:

最后,开始执行:

我记得我读过这种东西,但今天通过谷歌搜索找不到任何东西。任何帮助将不胜感激。

0 投票
2 回答
130 浏览

c# - 组播委托不明确

我有以下代码

When uppercase and lowercase checkboxes are selected then it only show me lowercase function's result.

如果我选择大写、小写和反向复选框,那么它只会显示反向功能的结果。

delegate的在下面

我正在使用多播委托并返回string,如上面的代码所示。请让我知道我做错了什么?

0 投票
1 回答
742 浏览

c# - C# MulticastDelegate 和调用方法

我在考虑 MulticastDelegate 和 Delegate,我不明白为什么调用方法不是 MulticastDelegate 的抽象方法。有人知道吗?

0 投票
3 回答
317 浏览

c# - 仅在生产环境中引发 MulticastDelegate 异常

我有一个非常奇怪的问题,只发生在生产环境中。异常有消息

“委托给实例方法不能有 null 'this'”。

抛出异常的方法很简单,而且工作了很长时间,所以问题一定是环境中的一个模糊的依赖,或者类似的东西......

我正在使用托管在 Azure 中的 ASP.NET Web API,并且控制器的操作方法是通过 AJAX 执行的。

这是引发异常的代码:

这是堆栈跟踪的相关部分:

有人可以找出这个异常的可能原因吗?提前致谢。

0 投票
2 回答
229 浏览

c# - 组播代表

我们可以使用泛型使用多播委托吗?请用下面的代码解释它是如何可能的。

0 投票
0 回答
186 浏览

javascript - 如何在对象而不是元素上创建和触发事件

我正在编写一个小型库,该库本质上是轮询站点以获取数据,然后应该在匹配时通知消费者。在 C# 中,我会使用事件,它们实际上是多播委托。我之前用 javascript 编写了自己的多播委托,但我认为必须有更好的方法。

消费者应注册一个回调,该回调应在数据可用时调用。像这样的东西:

在后台MyLibrary轮询数据。当它最终有匹配的东西时,它应该执行注册的函数。多个功能应该能够注册并且可能也可以取消注册。

CustomEvent非常接近我想要的。问题CustomEvent在于事件必须在元素上引发 - 它不能在对象上引发。也就是说,这是行不通的:

你如何在javascript中的对象上注册处理程序?我需要支持常用的浏览器和 IE11+。理想情况下,我不会拉图书馆来做任何这些。jQuery 将在页面上可用,如果这会使事情变得更容易,可以使用它。

作为参考,这是我过去使用的 Multicast Delegate 实现:

0 投票
3 回答
146 浏览

c# - 完全清除多播代表字典

我有一个多播委托字典,其中键是特定的消息类型,值是多播委托,即消息处理程序。

当我想清除该字典时,我想确保所有代表都未绑定和取消引用并最终被垃圾收集 - 清除字典是否足够,或者我应该枚举值(多播代表)并在清除之前先将它们设置为 null查字典?

0 投票
2 回答
481 浏览

c# - `System.MulticastDelegate` 的线程安全吗?

我正在寻找可能对此了解更多的人,我的直觉告诉我答案是“不,它不是线程安全的”,但我想确定。

为了说明我的问题,我提供了这个类的一些背景信息

编辑:我在上面的示例中添加了锁,但这真的不是我问题的重点。


我试图更好地理解保存调用列表的数组是否是线程安全的。坦率地说,我不清楚这一切是如何组合在一起的,我们将不胜感激。

根据我发现的文档,唯一没有提供真正洞察力的报价如下:

MulticastDelegate 有一个委托的链接列表,称为调用列表,由一个或多个元素组成。调用多播委托时,调用列表中的委托按照它们出现的顺序被同步调用。如果在执行列表期间发生错误,则会引发异常。

https://msdn.microsoft.com/en-us/library/system.multicastdelegate.aspx

提前致谢。

0 投票
1 回答
39 浏览

c# - 代码已编译并成功运行,但预期的输出是打印“Sub”未打印。这段代码有什么错误?

这段代码有什么问题?

0 投票
1 回答
75 浏览

c# - 从多播委托中删除特定委托的所有实例

注意:我写这篇文章是为了记录我的问题的答案,因为我经常发现自己不得不手动研究这个

我正在寻找一种有效的确定性方法来从多播委托中删除委托的所有实例。以tis代码为例:

即使我删除了提供者 3,输出仍然是 3,是否有一种简单的方法可以删除委托的所有实例?