【发布时间】:2011-12-07 22:12:35
【问题描述】:
我继承了一个大型 WinForm 应用程序,该应用程序可能需要进行一些重写。我在 ASP.NET Web 窗体中的 MVP 架构上取得了成功,并认为它非常适合这个应用程序。
该应用程序主要监听来自 IVR 系统的非请求事件(电话响铃、呼叫挂断等),并允许用户向 IVR 发出请求事件(拨号、转接、保持等)。我已经很好地掌握了将 MVP 用于请求事件,但我在概念化如何处理非请求事件时遇到了障碍。
今天,应用程序启动一个线程,每 500 毫秒对 IVR 进行极点(现在我写这篇文章可能是主动请求而不是主动请求)。
这个线程会在哪里触发?它会在主窗体的演示者中吗?
编辑: 再想一想,我觉得把它放在 Main 窗体的 Presenter Init 方法中是有意义的。我这样想对吗?
【问题讨论】:
-
您正在与之交互的可悲的未指定系统基本上是异步的。当我在做其他事情时,电话总是响起。因此,当事件在另一个线程上引发时,不要感到惊讶。需要 Control.BeginInvoke()。
-
我不太确定你是在批评我的问题描述还是同情我的困境。
-
这个问题有点含糊。我不确定您是否只是询问应该在哪里创建轮询线程(是的,系统初始化通常在主演示者 Initialize() 方法中进行),或者您是否需要更具体的帮助。
标签: winforms multithreading mvp