Messenger Register设置两次,只在一个地方接收消息,MVVM-Light

时间:2014-05-17 02:57:53

标签: mvvm-light

我在WP8.1通用应用程序中使用MVVM-Light时遇到了一个奇怪的问题。下载文件夹更改后,我将通过Messenger发送一条消息,其中包含新的StorageFolder下载文件夹。

我已注册在两个不同的viewmodel构造函数中接收此消息(一个用于主页面,一个用于自定义文件管理器页面)。两者的实例已经创建。

当我在我的模拟器中运行它时,一切正常。我在两个viewmodels上都收到了消息。但是,当我在手机上运行它(带有开发人员预览的Lumia 920)时,我只在主页面上收到消息,而不是甚至发送消息的文件管理器页面(来自页面自己的代码隐藏)。

我很想知道由于速度的不同,这里是否存在线程问题......但我也想知道MVVM-light工具包的ARM端是否存在错误。

1 个答案:

答案 0 :(得分:0)

根据我使用MessengerInstance.Register方法的方式,我是Messenger系统限制的受害者(不是确切的错误)。其他人在此完全描述了它:

https://mvvmlight.codeplex.com/workitem/7640

基本上,我使用的lambda包含一个来自lambda语句之外的参数,使其成为一个带有弱引用的类。这是垃圾收集,然后永远消失。通过改写整个事物来修复...