Silverlight 哪个线程执行注册的操作
在我主页的codebehind中,我注册了以下特定消息:Silverlight 哪个线程执行注册的操作,silverlight,mvvm-light,Silverlight,Mvvm Light,在我主页的codebehind中,我注册了以下特定消息: Messenger.Default.Register<String>(this, Notifications.ShowAlert, ShowAlertAction); Messenger.Default.Register(此,Notifications.showart,showartAction); 正如您所想象的,ShowAlertAction执行一些UI工作(在这种情况下会弹出一个子窗口) 我担心的是,可能会发生从非U
Messenger.Default.Register<String>(this, Notifications.ShowAlert, ShowAlertAction);
Messenger.Default.Register(此,Notifications.showart,showartAction);
正如您所想象的,ShowAlertAction
执行一些UI工作(在这种情况下会弹出一个子窗口)
我担心的是,可能会发生从非UI线程发送消息的情况。发送消息时,消息是在执行发送的线程上执行还是在执行注册的线程上执行?Messenger不会将消息分派到其他线程。因此这是正确的,操作是在发送方的线程上执行的,这可能会导致跨线程异常。为了避免这种情况,建议使用DispatcherHelper类在主线程上发送消息,即使发送者正在后台线程上运行 其他一些框架会自动进行分派(例如Prism),但API非常复杂且容易混淆。我更喜欢直截了当的方法 干杯
LaurentMessenger不会分派到其他线程。因此这是正确的,操作是在发送方的线程上执行的,这可能会导致跨线程异常。为了避免这种情况,建议使用DispatcherHelper类在主线程上发送消息,即使发送者正在后台线程上运行 其他一些框架会自动进行分派(例如Prism),但API非常复杂且容易混淆。我更喜欢直截了当的方法 干杯 洛朗