我有一个班级服务,它控制beetwen CNC shell程序和CNC控制器的连接和数据交换。此类实现一些方法,其中包括GetResponse方法。
...
public bool GetResponse(string query, out string result)
...
此方法将命令发送到cnc控制器。这可能是成功或失败。方法返回操作成功。 “字符串结果”返回错误代码,如果操作成功,则返回空字符串。 有时我需要发送命令J +(慢跑)和A(停止慢跑)。命令J +执行机器的连续点动。命令A停止此慢跑。控制器通过以太网连接。有时GetResponse方法可能不发送命令并返回false。但是,如果它不发送命令A(停止慢跑),那么我有很大的问题,机器就不会停留。
我可以在不返回成功的情况下在“ while循环”中执行GetResponse方法,但是如果不返回成功,则永远不会出现新问题-死锁程序(无限while循环)。
我也可以实现命令队列,当命令成功执行时,此方法将释放队列。但是,如果队列太满,命令将无法及时运行,并且命令(停止慢跑)执行得太晚。 在这种情况下有最佳实践吗?