我有一个具有异步启动和停止方法的第三方对象。每个启动和停止都可能失败,并有异常。该对象不可重入,即,在上一次启动/停止完成后,我只能调用其启动或停止方法。异步启动/停止状态转换
我需要有一个处理这些过渡到正确的(=最后问)状态的类,同时尽量减少转换的数量,让我的客户从任何线程在任何时间提交开始的任何数量/停止请求。
目前,我已经在async方法中实现了无限循环的功能,但是它太复杂了,循环超过4页长,每次迭代时我需要在8个状态之间手动切换(使用以下3位:需要启动/停止,尝试启动/停止,失败/成功)。它闻起来臭臭的。
我有一种感觉,我可能会错过这里明显的东西。 此外,我的代码看起来有点类似于编译异步函数时的编译器。 有没有更好的方法来解决这个问题?
你能展示/分享代码吗?也许它更适合http://codereview.stackexchange.com/? –
@RonKlein谢谢你的建议。我会问我的客户他们是否可以,如果是的话,会尝试codereview。 – Soonts
@RonKlein客户说他们可以分享那个特定的课程。这是代码:http://codereview.stackexchange.com/q/114764/46194 – Soonts