我有一个执行多个测试的测试引擎,直到所有测试都已执行。
每个测试对象都有一个Execute
andResume
方法。这些方法返回一个状态:
- 等待来自 COM 端口的回复
- 等待用户点击按钮
- 测试完成。
在 GUI 中,用户通过单击按钮启动测试引擎。换句话说,按钮的点击事件调用了测试引擎的启动方法。
接下来,测试可能会通过 COM 端口发送消息,并且必须暂停,直到从 COM 端口接收到消息。我让 COM 端口中断处理消息,然后调用测试引擎的恢复方法。
测试可能需要来自用户的信息。在这种情况下,测试会在文本框中显示一条消息,然后返回。按钮的单击事件处理程序将调用测试引擎的恢复方法。
这工作正常,除了现在我需要有一个测试通过 COM 端口重复发送消息并接收回复。该循环只能通过单击 GUI 上的按钮来终止。
我了解到 COM 端口中断处理程序在与 GUI 不同的线程中运行。测试通过使用委托来执行 GUI 方法。
如何在等待 COM 端口消息的同时让测试引擎检查按钮单击?测试引擎应在接收到 COM 端口消息后检查按钮单击,以保持消息系统同步。
注意:
我正在考虑让测试引擎在工作线程中运行,信号量用于从 COM 端口接收到的消息,另一个信号量用于停止按钮。测试引擎将挂起消息信号量,唤醒,处理消息,然后检查停止按钮信号量。
在 Windows 7 上使用 C# 和 Visual 2010 Express。