为什么Caliburn.Micro僵尸的观点一直存在?

时间:2016-08-24 21:37:19

标签: c# wpf garbage-collection caliburn.micro

我们有一个用Caliburn.Micro 2.0.1编写的应用程序。我们的应用程序上有一个登录ViewModel(LoginViewModel)。用户在启动时和注销后会看到关联的LoginView

ViewModel在LoginView的UI控件上绑定了依赖属性的通知布尔属性,后者又发送一个事件(使用Message.Attach)。

我们突然意识到,如果用户多次登录和注销,则代码命中依赖项属性回调的次数会增加。因此,第二次登录时,您会两次点击回调,然后在三次登录后三次,依此类推。最终你会看到它再次下降。一些模式如1,2,3,4,5,3,4,5等就是一个例子。

据推测,正在进行垃圾收集,这解释了为什么数字在几次迭代后会下降。但是,我们担心我们做错了什么(或者可能是Caliburn.Micro中的错误?)。

我们检查了Caliburn.Micro的视图缓存,并且LoginView的实例永远不会超过一个。

虽然我们了解Caliburn.Micro可能会在每次LoginViewModel激活时重新生成视图,但我们假设DataContext将在视图的旧实例上清空。这似乎没有发生。

有什么想法吗?

0 个答案:

没有答案