弱引用相关异常
本文关键字:异常 引用 | 更新日期: 2023-09-27 18:10:00
在开始使用开源 MVVM 框架中的类后,我开始出现以下异常,该类使用弱引用来防止内存泄漏。
此类称为PropertyObserver
,是"处理其他对象的INotifyPropertyChanged.PropertyChanged
事件的标准化方法。此类使用弱引用和弱事件模式来防止内存泄漏。
异常的触发器是退出 WPF 应用,其中ShellVm
引用了对多个DetailVm
的引用MasterVm
,每个都包含上述PropertyObserver
。MasterVm
最终是静态Inflector
类的使用者,用于复数和大写这个和那个,这就是抛出WeakReference
相关异常的地方。
不能说我完全理解例外,所以我想这是起点。我将如何开始解决这个问题?
System.InvalidOperationException 未由用户代码处理消息=句柄未初始化。来源=mscorlib堆栈跟踪: 在System.WeakReference.set_Target(对象值( at System.Text.RegularExpressions.Regex.Replace(String input, String replacement, Int32 count, Int32 startat( at System.Text.RegularExpressions.Regex.Replace(String input, String replacement( at Inflector.Inflector.Rule.Apply(String word( at Inflector.Inflector.ApplyRules(List'1 rules, String word( at Inflector.Inflector.Pluralize(String word( at Smack.Core.Lib.TextUtil.StringEx.Pluralize(String s( at Smack.Core.Lib.TextUtil.StringEx.PluralizeWithCount[T](String s, IEnumerable'1 collection( at Smack.Core.Presentation.Wpf.ViewModels.MasterDetailVms.GenericMasterViewModel'2.get_Status((内部异常:
会试着给出一个建议,就像我多年前遇到过这样的事情一样。老实说,我没有找到真正的解决方案。首先是粗略的,然后只是改变架构。
恐怕没有其他解决方案,那么请尝试调用GC。Collect(( 销毁对象(粗略的解决方案(,或者只是更改 MVVM 框架。
谷歌搜索了一些之后:
句柄未初始化1
句柄未初始化2
简而言之WeakReferences
这与不同版本的.NET Framework
中存在的错误有关。
祝你好运。
如评论中所述:
该异常实际上是由正则表达式触发的,它也使用弱引用。堆栈跟踪非常不完整。像图书馆里的虫子一样嘎嘎叫法典。查找使用不当的析构函数。
Hans Passant, 九月 29, 2011 at 19:24
<小时 />OP证实了这一点:
就是这样,析构函数中的某个日志记录行,其中值为 null
贝里尔, 九月 29, 2011 at 20:54