错误代码为 0x80131623
这是一个非常具体的错误代码,COR_E_FAILFAST。只有一种生成它的方法,有人称为 Environment.FailFast()。
显然,挑战是找出什么代码叫它。首先查看 Windows 应用程序事件日志,应该有一条关于它的消息,说明调用的主要原因,无论传递给 FailFast() 的字符串是什么。
应用程序通过 System.Environment.FailFast(string message) 请求进程终止。
在 System.Environment.FailFast(System.String)
在 System.Windows.WeakEventManager.DeliverEventToList(System.Object, System.EventArgs, ListenerList)
在 System.Windows.WeakEventManager.DeliverEvent(System.Object, System.EventArgs)
是的,该代码中有一个 Assert() 。我只会发布我在参考源中可以看到的内容,我对您的代码知之甚少,无法查看您做错了什么。除了线程肯定是触发此类问题的好方法之外,ObservableCollection 完全是线程不安全的,并且必须由锁保护。
// if the event isn't handled, something is seriously wrong. This
// means a listener registered to receive the event, but refused to
// handle it when it was delivered. Such a listener is coded incorrectly.
if (!handled)
{
Invariant.Assert(handled,
SR.Get(SRID.ListenerDidNotHandleEvent),
SR.Get(SRID.ListenerDidNotHandleEventDetail, iwel.GetType(), managerType));
}