5
.Netでは、そのメソッドの1つでDelegate.BeginInvokeを使用して非同期処理を開始するオブジェクトをインスタンス化し、そのオブジェクトへの参照をnullに設定するか、スコープから外れるようにしてオブジェクトを放棄するとします。非同期プロセスの進行中にガベージコレクタがオブジェクトを収集しようとしますか?そうでない場合は、オブジェクトを収集することを妨げているのは何ですか?放棄されたオブジェクトが非同期的にメソッドを実行している.NET GCが混乱しますか?
偉大な、完全な意味があります。私は今これで少し拡大する必要があります。 AsyncCallbackをBeginInvokeに渡して、非同期処理が完了したときにファイナライズ処理を行い、EndInvokeを呼び出すことができるようにしました。このAsyncCallbackが完了するまで、デリゲートの呼び出しが完了していないことは本当ですか?したがって、オブジェクトはAsyncCallbackが終了するまでコレクションの候補にはなりません。 –
はい。 http://msdn.microsoft.com/en-us/library/system.runtime.remoting.messaging.asyncresult_members.aspxを参照してください - あなたの代理人、したがってオブジェクトのハンドルがAsyncDelegateプロパティにあります。コールバックが終了するまで、これはGCの候補にはなりません。 –
パーフェクト、大変感謝しています。 –