在调试时,我可以查看一下textBox1.TextChanged
查看事件订阅数量?如果是,那么我该如何钻取它?我需要知道在给定时间有多少订阅进行调试,因为看起来一个事件被多次触发,但我怀疑这个错误确实是因为textBox1.TextChanged += handler
应用程序管理不善,因此订阅者太多。
这是我认为正在发生的事情的简化版本。如果可能的话,我只想设置一个断点并统计“textBox1.TextChanged”的订阅数量:
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox1.TextChanged += textBox1_TextChanged;
MessageBox.Show("asdf");
textBox1.TextChanged -= textBox1_TextChanged;
textBox1.Text = DateTime.Now.ToString();
textBox1.TextChanged += textBox1_TextChanged;
}
这可能吗还是更复杂?
您必须使用反射来获取事件委托的调用列表:
textBox1.TextChanged += textBox1_TextChanged;
MessageBox.Show("asdf");
textBox1.TextChanged -= textBox1_TextChanged;
textBox1.Text = DateTime.Now.ToString();
textBox1.TextChanged += textBox1_TextChanged;
var eventField = textBox1.GetType().GetField("TextChanged", BindingFlags.GetField
| BindingFlags.NonPublic
| BindingFlags.Instance);
var subscriberCount = ((EventHandler)eventField.GetValue(textBox1))
.GetInvocationList().Length;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)