假設我有兩個事件A和B.他們每個人都引發異步調用,比如AsyncA和AsyncB。如何等待異步調用完成?
我想要的是:當A僅在AsyncB完成時調用AsyncA。
事件A和B按順序依次觸發:A,然後B. 我預計AsyncA在AsyncB完成之前完成,但實際上大部分時間,AsyncB在AsyncA之前完成。
我不能在AsyncA完成的事件中放置AsyncB調用。 如何確保AsyncB始終在AsyncA之後?
假設我有兩個事件A和B.他們每個人都引發異步調用,比如AsyncA和AsyncB。如何等待異步調用完成?
我想要的是:當A僅在AsyncB完成時調用AsyncA。
事件A和B按順序依次觸發:A,然後B. 我預計AsyncA在AsyncB完成之前完成,但實際上大部分時間,AsyncB在AsyncA之前完成。
我不能在AsyncA完成的事件中放置AsyncB調用。 如何確保AsyncB始終在AsyncA之後?
不能保證臺異步調用的完成順序,但你可以執行工作要在爲了做你要。你需要的是一種同步的方式。
在OnAsyncA
您需要:
OnAsyncB
所需的信息的工作。在OnAsyncB
,
在線程池線程,
OnAsyncB
所做的工作。還有其他的變化,比如有一個更長的運行線程從「依賴事件」隊列中出隊,使用TPL等等。
記住要從線程池線程同步回UI線程。
你能解釋爲什麼你不能在AsyncA完成的處理程序中調用AsyncB嗎? –
+1這個經典問題。我想你必須讓某個房間「以某種方式」在AsyncA完成的事件上調用AsyncB。 –
因爲事件A和B被不同的地方從不同的理由解僱了。 – KentZhou