如何在WPF / MVVM模式中包含Listener类型类?

时间:2012-10-30 13:58:05

标签: c# wpf mvvm

想象一下,你有一个Listener类,它将使用Connect方法连接app启动到某个服务器,然后它开始监听消息,并在每个收到的消息上引发事件OnRecievedMessage。根据这些消息,您需要更新视图模型,视图模型又会更新视图。为了不阻止UI,你必须在新线程上运行Listen()方法,因此事件OnRecievedMessage也将在这个新线程上运行。

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

1 个答案:

答案 0 :(得分:1)

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

  • 轻松将此注入您的Viewmodel
  • 过滤/映射并分派到UI-Thread
  • 更容易解开处理程序(Dispose vs.“ - =”)

所以不要传递你的“监听器”类 - 传递你实现/暴露在那里的IObservable!

请务必查看Rx-Framework