我试图提出弱事件处理程序(通过PropertyChangedEventManager)正在侦听的PropertyChanged事件。出于某种原因,我在举办活动时得到了ExecutionEngineException。ExecutionEngineException发生在C#中的弱处理程序引发PropertyChanged事件
我的事件提高代码如下所示:
protected virtual void RaisePropertyChanged(string aPropertyName)
{
var lHandler = this.PropertyChanged;
if (lHandler != null)
{
// ExecutionEngineException is thrown here
lHandler(this, new PropertyChangedEventArgs(aPropertyName));
}
return;
}
我处理的代码如下所示:
public bool ReceiveWeakEvent(Type aManagerType, object aSender, EventArgs e)
{
bool lHandled = false;
if (aManagerType == typeof(PropertyChangedEventManager))
{
OnPropertyChanged(aSender, e as PropertyChangedEventArgs);
}
return lHandled;
}
我没有得到任何有用的结果,当我搜索此异常,异常本身不包含任何有用的信息!是什么导致了这个问题?
呵呵。经典的,这实际上是由一个Assert()触发的。程序员当然没有意识到这个特定的方法仍然会在发布版本中声明。通过将HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ DbgJITDebugLaunchSetting设置设置为0x12,可以获得更好的结果。 – 2012-03-15 20:46:12
很高兴你发布了这个;我从来不会认为从事件处理程序返回false会导致FailFast,但显然它会。 – 2013-11-06 14:18:50
第一段中的链接不再可用。我在一个单独的答案中重复了这些内容。 – njplumridge 2015-12-14 15:31:40