带有未经请求的事件线程的WinForm MVP

时间:2011-12-07 22:12:36

标签: winforms multithreading mvp

我继承了一个可以使用一些重写的​​大型WinForm应用程序。我在ASP.NET Web Forms中获得了MVP架构的成功,并且认为它非常适合这个应用程序。

应用程序基本上侦听来自IVR系统的未经请求的事件(电话铃声,呼叫挂断等),并允许用户向IVR发送请求事件(拨号,转接,保持等)。我非常了解如何将MVP用于请求的活动,但我正在试图概念化未经请求的事件将如何处理。

今天,该应用程序每500毫秒触发一个极点(这可能比我自己写的那些未经请求的更多)IVR的线程。

这个线程会在哪里启动?它会出现在Main form的演示者身上吗?

修改 经过一番思考之后,我认为将它放在主窗体的演示者Init方法中是有意义的。我是否正确地考虑过这个问题?

1 个答案:

答案 0 :(得分:0)

我把它放在bootstrapper中,因为这似乎是你的应用程序的一个基本组件(如果你有一个,如果没有在主应用程序表单的启动位置)。

我认为你应该将这种轮询逻辑封装成某种单例,当确定有值得通知的东西时会引发一个事件。

实现这一目标的一种方法是使用Timer创建单例。 在ontimer活动中,你会去检查IVR,看看是否有任何有趣的通知。

要知道您需要通知您的人需要为有兴趣接收通知的用户(如观察者模式)保留订阅者列表,或者在您的演示者附加/退出时有.net事件,或者您也可以使用一些分离事件的实现作为Prism框架提供的事件。