2011-05-08 56 views

回答

4

啓動異步方法的對象的實例將保持活動狀態,直到操作完成。直到某個線程包含對其的引用時,纔會有資格進行垃圾收集。異步API在線程池中的線程上保留對該對象的引用,並且在操作結束之前它不會被垃圾收集。異步方法不會被垃圾收集器取消。

+0

你有什麼消息來證實這一點。似乎異步模式不需要該對象在周圍。你調用BeginOpertion並獲得一個AsyncResult。看起來AsyncResult是線程池線程上保存的內容,但並不要求該對象保持原樣,因爲從AsyncResult對象獲得實際結果,您可以在原始對象上調用EndRequest,即您提供此對象並在那裏沒有必要在內部保留它。 – Stilgar 2011-05-08 16:08:30

+1

@Stilgar,AsyncResult有一個[AsyncDelegate](http://msdn.microsoft.com/en-us/library/system.runtime.remoting.messaging.asyncresult.asyncdelegate.aspx)屬性,它本身有一個'Target'保留原始參考文獻的財產。 – 2011-05-08 16:12:01

相關問題