2012-07-30 70 views
0

我的应用程序(winform)必须访问串口上的设备。所有的通信东西放在一个DLL,它处理所有的串口通信,并且必须将串行设备的响应返回到主应用程序。 如何让主应用程序等待dll的响应以继续接收数据?暂停主程序等待DLL响应

+1

事件驱动的方法通常比等待好得多。如果等待时间过长,您的应用程序可能会冻结,Windows可能会提供杀死它的信息。 – 2012-07-30 14:24:38

回答

1

它取决于该DLL公开的API。如果他们提供同步API,则根本不需要任何暂停。你的线程将进入dll代码,当它返回到你的代码结果将在那里。

但是,如果API是异步应该是轮询方法或回调。

无论如何,如果你提供API的代码,我将能够给出更多相关的答案。

0

如果有问题的dll代码是异步的,则线程连接可能会发挥作用。无论如何,您是否可以访问用于读取串口的底层线程?

0

如果API是同步的,则在另一个线程中调用API。当您启动该线程时,禁用UI中的所有相关控件(或禁用整个表单;但这通常不是一种好的用户体验),并提供某种通知(例如状态栏上的文本)。当API返回时通知UI线程已完成并重新启用控件并向用户提供一些通知。

如果API是异步的,请禁用控件,提供状态并调用API。当API通知您它已完成(或失败)时,重新启用控件并提供状态。