0

我的应用程序(winform)必须访问串行端口上的设备。所有通信内容都放在一个 dll 中,该 dll 处理所有串行端口通信,并且必须将串行设备的响应返回给主应用程序。如何使主应用程序等待 dll 的响应以继续接收数据?

4

3 回答 3

1

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

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

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

于 2012-07-30T14:22:50.193 回答
0

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

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

于 2012-07-30T14:36:20.000 回答
0

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

于 2012-07-30T14:26:16.447 回答