Mat*_*att 5 .net c# events delegates .net-4.0
考虑您希望为一个且仅一个通知订阅事件的情况.第一次通知到达后,您取消订阅所有未来事件.以下模式会出现任何内存问题吗?它可以工作,但我不确定自引用闭包是否可以使内存中的内容长于预期.
public class Entity
{
public event EventHandler NotifyEvent;
}
// And then, elsewhere, for a listen-once handler, we might do this:
Entity entity = new Entity();
Action<object, EventArgs> listener = null;
listener = (sender, args) =>
{
// do something interesting
// unsubscribe, so we only get 1 event notification
entity.NotifyEvent -= new EventHandler(listener);
};
entity.NotifyEvent += new EventHandler(listener);
Run Code Online (Sandbox Code Playgroud)
请注意,您必须声明'listener'并指定一个值(null).否则编译器会抱怨"使用未分配的局部变量listener"
| 归档时间: |
|
| 查看次数: |
443 次 |
| 最近记录: |