是否有一个简单/干净/优雅的方式让事件客户端在连接到事件时被调用?也就是说,当客户端使用+ =连接到事件时,例如:
someEvent += someClient
如果可以立即调用客户端将会很有用。 - 好像事件是在客户端连接时发生的。目的是向客户提供最近发生的事件中的信息,以便客户能够赶上'与该事件相关的国家。
一个具体的例子:商店的窗户上有一些自动收报机带式标志。每个代码的代码都会从商店的系统中获取一个事件,告诉它要显示什么(例如,此刻的销售情况)。 (每个标志显示相同的内容。)当每个标志打开时,它想知道最新的'在售后'事件是。如果商店经营者首先将销售信息输入商店系统(并且'销售'活动熄灭 - 无人),然后打开标志,标志必须以某种方式询问最新活动&# 39; s'出售'信息。当它作为事件客户端/接收者连接时,将最新事件(重新)发送到符号似乎更清晰,因此在符号中只有一个机制。
有没有办法连接一个'客户已注册'挂钩事件,以便自定义代码'会被处决吗?在这种情况下,代码会向(仅)新客户端发送一个事件,以便客户端得到“赶上”。例如,覆盖用于注册客户端的+ =运算符? (怎么这样做对我来说还不清楚......)
感谢您的想法。
答案 0 :(得分:2)
试试这个:
class Test
{
public delegate void TestEventHandler(int arg);
private TestEventHandler _testEvent;
private readonly _defaultEventArg = 42;
public event TestEventHandler TestEvent
{
add
{
_testEvent += value;
value(_defaultEventArg);
}
remove
{
_testEvent -= value;
}
}
}
var t = new Test();
t.TestEvent += (val) =>
{
Console.WriteLine("Event fired: " + val);
};
答案 1 :(得分:1)
您必须实现自定义事件访问器。
从MSDN查看此HowTo。
我复制了代码段并插入了注释,您可以在其中插入代码来调用新添加的侦听器:
event EventHandler IDrawingObject.OnDraw
{
add
{
lock (PreDrawEvent)
{
// Write your custom code here
PreDrawEvent += value;
}
}
remove
{
lock (PreDrawEvent)
{
PreDrawEvent -= value;
}
}
}