我的类有一个外部对象将订阅的事件:
public event EventHandler<MessageReceivedEventArgs> MessageReceived;
Run Code Online (Sandbox Code Playgroud)
但是,在其自己的线程上运行的内部Listener对象实际上将发起该事件.
private class Listener
{
public void Run()
{
// events raised here which should be forwarded
// to parent's MessageReceived
}
};
Run Code Online (Sandbox Code Playgroud)
我倾向于在Listener上创建一个具有相同签名的事件,并在主类中订阅它以便在MessageReceived上引发它.这看起来有点麻烦,所以我想知道是否有一种简洁/惯用的方式来转发这样的事件.
Rya*_*rle 22
您可以使用事件添加/删除访问器,以便将连接到面向外部事件的事件"转发"到内部侦听器
public event EventHandler<MessageReceivedEventArgs> MessageReceived {
add { this.listener.MessageRecieved += value; }
remove { this.listener.MessageRecieved -= value; }
}
Run Code Online (Sandbox Code Playgroud)
这意味着您需要在侦听器中创建一个事件,但好处是没有其他管道来连接事件.
| 归档时间: |
|
| 查看次数: |
3722 次 |
| 最近记录: |