【发布时间】:2010-12-20 19:51:23
【问题描述】:
我想如果我有这个代码:
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null) PropertyChanged(this, e);
}
并且PropertyChanged 事件没有被钩住,ProeprtyChanged 将是null,但我得到一个不为空的PropertyChanged,其_invocationList 成员是null,其@987654328 @ member 为 0。当我调用 PropertyChanged(this, e) 时,这(我认为)会导致 ArgumentOutOfRangeException。知道问题出在哪里吗?
这是我在 OnClick 事件中的堆栈跟踪:
在 System.Collections.ArrayList.get_Item(Int32 索引) 在 System.Windows.Forms.BindingsCollection.get_Item(Int32 索引) 在 System.Windows.Forms.BindingManagerBase.PushData(布尔值&成功) 在 System.Windows.Forms.PropertyManager.OnCurrentChanged(EventArgs ea) 在 System.Windows.Forms.BindToObject.PropValueChanged(对象发送者,EventArgs e) 在 System.EventHandler.Invoke(对象发送者,EventArgs e) 在 System.ComponentModel.PropertyDescriptor.OnValueChanged(对象组件,EventArgs e) 在 System.ComponentModel.ReflectPropertyDescriptor.OnValueChanged(对象组件,EventArgs e) 在 System.ComponentModel.ReflectPropertyDescriptor.OnINotifyPropertyChanged(对象组件,PropertyChangedEventArgs e) 在 Player.DataBaseManager.OnPropertyChanged(PropertyChangedEventArgs e) 在 C:\Users\Juan Luis\My Dropbox\Documents\CodeWebScraper sin Player\WebScraperAndPlayer\Player\DataBaseManager2.cs:line 100 在 C:\Users\Juan Luis\My Dropbox\Documents\CodeWebScraper sin Player\WebScraperAndPlayer\Player\DataBaseManager2.cs:line 30 中的 Player.DataBaseManager.set_TableNames(List`1 value) 在 Player.DataBaseManager.UpdateTableNames() 在 C:\Users\Juan Luis\My Dropbox\Documents\CodeWebScraper sin Player\WebScraperAndPlayer\Player\DataBaseManager2.cs:line 95 在 C:\Users\Juan Luis\My Dropbox\Documents\CodeWebScraper sin Player\WebScraperAndPlayer\Player\DataBaseManager2.cs:line 336 中的 Player.DataBaseManager.ExecuteNonQuery(String sqlQuery) 在 C:\Users\Juan Luis\My Dropbox\Documents\CodeWebScraper sin Player\WebScraperAndPlayer\BuilderForm2\Data\DataBaseEditor.cs:line 90 中的 WebScraperAndPlayer.DataBaseEditor.deleteTableButton_Click(Object sender, EventArgs e) 在 System.Windows.Forms.ToolStripItem.RaiseEvent(对象键,EventArgs e) 在 System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
【问题讨论】:
-
异常出现在调试器的什么地方?
-
PropertyChanged(this, e)