0
所以我有一個UI線程。人點擊一些東西,因爲他們喜歡它。所以點擊觸發一些函數調用。其中一個潛在的函數調用使用CDROM驅動程序,通過嘗試幾次讀取髒盤並使其發生瘋狂的砰砰聲。在引發異常的異步期間維護重試狀態
所以我想要一個響應式的用戶界面,我把我的函數調用等待。所以當用戶點擊時,函數會將控制權交給UI線程。函數嘗試讀取CDROM,但它非常髒,所以它向調用者拋出異常。該調用者計算重試次數並繼續嘗試三次。
所以,如果這一切都在等待,我在哪裏保持計數?
如果我將計數保持在較低的水平,並且該水平隨着等待而放棄,那麼它將無法繼續重試直到三次嘗試,因爲它是REL RELATED。
但是,如果我不放棄,我無法保持響應式用戶界面。
我是否將計數保存在Task對象中?並且究竟哪個線程/等待級別可以負責檢查重試計數?
所以如果所有的重試都用盡了,我該怎麼辦? ....如果等待成功,它將執行任務對象中的回調指針。如果這個級別的函數確定await已經嘗試了足夠多的話,它是如何指示/中斷的;呼叫者? This.oTask.failed? –
你可以做任何你想做的事情。我發佈的代碼只是放棄(沒有錯誤),如果重試都用完了。如果你願意,你可以選擇重新拋出異常。 –
UI線程可以中止while循環嗎?假設用戶決定他應該去購買另一個磁盤副本。 –