我们公司生产了一种可以通过USB连接到PC的产品。我正在为这个产品编写一个动态链接库驱动程序,使用Visual C#,以便任何想要编写可以控制或设备的程序的人都可以这样做。驱动程序将执行的一些操作需要几秒钟的时间才能使设备完成(例如,移动设备中的电机10,000步)。我正在考虑两种不同的方法来处理这个驱动程序,我不确定哪一个是理想的。
第一种方法:使命令成为非阻塞的。基本上,客户端应用程序将调用我的dll中的一个方法来启动电机转动,该方法将立即返回。然后我会有一个事件,'MoveFinished‘,它在移动完成时被触发。这种方法将允许客户端应用程序在电机移动时不会冻结并执行其他操作,而无需使用多线程。
第二种方法:使命令阻塞。因此,当客户端应用程序调用Move方法时,该方法会阻塞,直到移动完成后才会返回。这将导致客户端应用程序在移动发生时冻结(除非它们使用多线程),但它也可能有用,因为它不允许客户端应用程序在设备已经移动时犯下愚蠢的错误,如调用move方法……
有没有人有什么经验、智慧、评论或想法可以分享?
发布于 2009-12-17 00:06:13
我会两样都做。由于您正在向您的设备中编写API,因此我将为最终用户提供灵活性,以决定他们希望该方法如何操作。同步或异步。
如果你只能选择一条路,我会选择异步。原因是,大多数针对设备进行开发的用户很可能不希望应用程序在设备完成进程时冻结。
您正在谈论的事件结构很好。
https://stackoverflow.com/questions/1915618
复制相似问题