我有一個具有異步啓動和停止方法的第三方對象。每個啓動和停止都可能失敗,並有異常。該對象不可重入,即,在上一次啓動/停止完成後,我只能調用其啓動或停止方法。異步啓動/停止狀態轉換
我需要有一個處理這些過渡到正確的(=最後問)狀態的類,同時儘量減少轉換的數量,讓我的客戶從任何線程在任何時間提交開始的任何數量/停止請求。
目前,我已經在async方法中實現了無限循環的功能,但是它太複雜了,循環超過4頁長,每次迭代時我需要在8個狀態之間手動切換(使用以下3位:需要啓動/停止,嘗試啓動/停止,失敗/成功)。它聞起來臭臭的。
我有一種感覺,我可能會錯過這裏明顯的東西。 此外,我的代碼看起來有點類似於編譯異步函數時的編譯器。 有沒有更好的方法來解決這個問題?
你能展示/分享代碼嗎?也許它更適合http://codereview.stackexchange.com/? –
@RonKlein謝謝你的建議。我會問我的客戶他們是否可以,如果是的話,會嘗試codereview。 – Soonts
@RonKlein客戶說他們可以分享那個特定的課程。這是代碼:http://codereview.stackexchange.com/q/114764/46194 – Soonts