当我使用匿名操作时,MvvmLight messenger有时不起作用。如果我将成员变量或方法作为操作传递它可以正常工作,但使用匿名lambda或局部变量不起作用。
private SongCollection songCollection;
Action<bool> c;
public MyService(SongCollection songCollection)
{
this.songCollection = songCollection;
Action<bool> a = (bool isLoading) =>
{
ChangeSong(songCollection.GetFirstSong());
};
Action<bool> b = OnLoadingComplete; //Using this instead of 'a' works.
//c = a; //Uncommenting this line makes it work, even if using 'a'.
Messenger.Default.Register<bool>(this, "IsLoading", a); //Doesn't work.
}
我猜它与垃圾收集或MvvmLight在幕后工作的方式有关。或者我错过了一些明显的东西?
我在.Net4.0上使用版本MvvmLight 4.3.31.1
。