弱引用相关异常

本文关键字:异常 引用 | 更新日期: 2023-09-27 18:10:00

在开始使用开源 MVVM 框架中的类后,我开始出现以下异常,该类使用弱引用来防止内存泄漏。

此类称为PropertyObserver,是"处理其他对象的INotifyPropertyChanged.PropertyChanged事件的标准化方法。此类使用弱引用和弱事件模式来防止内存泄漏。

异常的触发器是退出 WPF 应用,其中ShellVm引用了对多个DetailVm的引用MasterVm,每个都包含上述PropertyObserverMasterVm最终是静态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