2012-02-13 7 views
1

私はこの方法があります:私は、プログラムがシャットダウンされるまで、すべての時間をモニター生き続けたいローカルオブジェクトをC#でGCしないようにする方法は?

private static void StartLicensePlateMonitor(Autofac.IContainer container) 
    { 

     var monitor = container.Resolve<LicensePlate.LicensePlateUploadMonitor>(); 
     monitor.Start(); 

     System.GC.KeepAlive(monitor); //does this work? 

    } 

は、声明ん「System.GC.KeepAlive(モニタ);」作業?

答えて

2

いいえSystem.GC.KeepAlive()のドキュメントでは、の呼び出しがKeepAlive()になるまで実行されていることが保証されています。それは、GCが引数の実際の使用をチェックしないことを約束するダミー関数です。

オブジェクトを存続させたい場合は、オブジェクトへの参照が常にあることを確認してください。 private staticフィールドに格納するだけで十分です。あなたがそれらの任意の数を持っている場合、フィールドにListにそれを格納してください。

関連する問題