private void button1_Click(object sender, EventArgs e)
{
Packet packet = new Packet();
packet.DataNotSent += packet_DataNotSent;
packet.Send();
}
private void packet_DataNotSent(object sender, EventArgs e)
{
Console.WriteLine("Packet wasn't sent.");
}
class Packet
{
public event EventHandler DataNotSent;
public void Send()
{
if (DataNotSent != null)
{
DataNotSent(null, EventArgs.Empty);
}
}
}
如果只是一个简单的整数变量声明,那么当它超出范围并且稍后由垃圾收集器收集时,就没问题了,但事件有点...更长寿?我需要手动取消订阅或采取任何措施来确保这正常工作吗?
这感觉有点奇怪。不确定它是否正确。通常,当我添加到事件处理程序时,它会持续整个应用程序,所以我不确定在不断添加和删除事件处理程序时会发生什么。