初始化租用期

本主題專門說明一項為了在現有應用程式中提供回溯相容性而保留的舊有技術,不建議用於新的開發工作。分散式應用程式應使用  Windows Communication Foundation (WCF) 進行開發。

當衍生自 MarshalByRefObject 的類別產生之後,.NET 遠端架構就會呼叫物件的 InitializeLifetimeService 方法。這個方法會傳回租用期 (Lease) 物件,其中包含遠端物件的預設存留期值。您可以在伺服器應用程式組態檔中指定替代值 (使用 <lifetime> 項目) 或是覆寫 InitializeLifetimeService 來修改這些預設值。

如果您在組態檔中指定替代值,請注意這會改變伺服器應用程式所裝載之所有物件的預設存留期值。您可以覆寫 InitializeLifetimeService 來變更特定類別的預設存留期值。

覆寫 InitializeLifetimeService

在您覆寫 InitializeLifetimeService 時,必須檢查 CurrentState 的值。只有當 CurrentState 等於 Initial 時,您才可以變更這些租用期值。

唯一會影響存留期服務的呼叫,就是 .NET 遠端基礎結構對 InitializeLifetimeService 的呼叫,因為此呼叫會啟動租用期。其他程式碼可以呼叫 InitializeLifetimeService 並建立租用期,但是該租用期會在傳回 .NET 遠端基礎結構之前維持為初始狀態。

如果 InitializeLifetimeService 傳回 null,則物件的存留期為無限,而且會等到裝載的應用程式定義域已經卸載,才會進行記憶體回收。

實作 InitializeLifetimeService 時通常會呼叫基底類別的對應方法,以擷取遠端物件的現有租用期。如果物件從未被封送處理,則傳回的租用期將保持在初始狀態,而且可讓您設定租用期屬性。一旦物件經過封送處理,租用期會從初始狀態變成作用狀態,這時候對租用期屬性的任何初始化嘗試都會被忽略,並擲出例外狀況。遠端物件一旦被啟動,就會呼叫 InitializeLifetimeService。啟動呼叫時會提供租用期的贊助者清單,而且只要租用期為作用中,隨時都可以加入額外的贊助者。

如需如何覆寫 InitializeLifetimeService 方法的詳細資訊,請參閱 HOW TO:覆寫 InitializeLifetimeService 介面

另請參閱

工作

HOW TO:覆寫 InitializeLifetimeService 介面

概念

更新租用期
遠端處理範例:存留期
存留期租用期