0

想象一下,您有一个 Listener 类,它将在应用程序启动时使用 Connect 方法连接到某个服务器,然后它开始收听消息,并在收到的每条消息上引发事件 OnRecievedMessage。根据这些消息,您需要更新视图模型,进而更新视图。更重要的是,您必须在新线程上运行 Listen() 方法才能不阻塞 UI,因此事件 OnRecievedMessage 也将在这个新线程上运行。

你将如何将这样的类合并到 WPF/MVVM 应用程序的结构中,以及如何将它与 viewmodel 连接起来?

4

1 回答 1

1

在这种情况下,我不会使用事件 - 我会公开IObservable<T> 因为 IObservable 将是一个对象,并且可以轻松地传递给/从您获得的函数中返回:

  • 轻松地将其注入您的 Viewmodel
  • 过滤/映射并分派到 UI 线程
  • 更轻松地解开处理程序(Dispose 与“-=”)

所以不要传递你的“监听器”类——传递你在那里实现/公开的 IObservable!

确保查看Rx-Framework

于 2012-10-30T14:26:20.820 回答