gpt4 book ai didi

c# - 设备驱动程序 DLL 阻塞与非阻塞?

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:50 24 4
gpt4 key购买 nike

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

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

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

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

最佳答案

我会两者兼顾。由于您正在将 API 写入您的设备,因此我会给最终用户以灵 active 来决定他们希望该方法如何运行。同步或异步。

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

你说的事件结构很好。

关于c# - 设备驱动程序 DLL 阻塞与非阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1915618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com