2

我的公司生产一种通过 USB 连接到 PC 的产品。我正在为此产品编写一个使用 Visual C# 的 DLL 驱动程序,以便任何想要编写可以控制或设备的程序的人都可以这样做。驱动程序将执行的某些操作需要几秒钟才能完成设备(例如将电机在设备中移动 10,000 步)。我正在考虑对这个驱动程序使用两种不同的方法,但我不确定哪种方法是理想的。

第一种方法:使命令非阻塞。基本上,客户端应用程序会调用我的 dll 中的一个方法来启动电机转动,并且该方法会立即返回。然后我会有一个事件,“MoveFinished”,在移动完成时触发。这种方法将允许客户端应用程序在电机移动时不会冻结并执行其他操作,而无需使用多线程。

第二种方法:使命令阻塞。因此,当客户端应用程序调用 Move 方法时,该方法会阻塞并且在移动完成之前不会返回。这将导致客户端应用程序在移动发生时冻结(除非它们使用多线程),但它也可能很有用,因为它不会允许客户端应用程序犯愚蠢的错误,例如在设备时调用 move 方法已经在动了……

有没有人有任何经验、智慧、评论或想法可以分享?

4

1 回答 1

2

我会做这两个。由于您正在将 API 编写到您的设备中,因此我会让最终用户灵活地决定他们希望该方法如何操作。同步或异步。

如果您只能选择一种路线,我会支持 Async。原因是大多数针对设备开发的用户很可能不希望在设备完成进程时冻结应用程序。

您正在谈论的事件结构很好。

于 2009-12-16T16:06:13.173 回答