弱参考相关异常

时间:2011-09-29 18:27:32

标签: c# weak-references

在开始使用来自使用弱引用的开源MVVM框架的类来防止内存泄漏之后,我开始获得以下异常。

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

该异常的触发器是退出WPF应用程序,其中ShellVm具有对MasterVm的引用,该MasterVm引用了多个DetailVms,每个DetailVms都包含上述PropertyObserver。 MasterVm最终是静态Inflector类的使用者,用于对此进行复数化和大写化,这就是WeakReference相关异常被抛出的地方。

我不能说我完全理解异常,所以我猜这是起点。我该如何解决这个问题?

干杯,
Berryl

System.InvalidOperationException was unhandled by user code
Message=Handle is not initialized.
Source=mscorlib
StackTrace:
   at System.WeakReference.set_Target(Object value)
   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()

InnerException:

1 个答案:

答案 0 :(得分:2)

我会尝试给出一种建议,就像我多年前遇到过的那样。说实话,我没有为它找到真正的解决方案。在改变建筑之后,首先是粗略的。

我担心没有其他解决方案,只需尝试在销毁对象(粗略解决方案)上调用GC.Collect(),或者只是更改MVVM框架。

用谷歌搜索后:

Handle not initialized1

Handle not initialized2

简而言之,这与WeakReferences的不同版本中出现的.NET Framework错误有关。

祝你好运。