MarshalByRefObject.InitializeLifetimeService 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
警告
This Remoting API is not supported and throws PlatformNotSupportedException.
取得存留期服務物件,以控制這個實例的存留期原則。
public:
virtual System::Object ^ InitializeLifetimeService();
[System.Obsolete("This Remoting API is not supported and throws PlatformNotSupportedException.", DiagnosticId="SYSLIB0010", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public virtual object InitializeLifetimeService();
public virtual object InitializeLifetimeService();
[System.Security.SecurityCritical]
public virtual object InitializeLifetimeService();
[<System.Obsolete("This Remoting API is not supported and throws PlatformNotSupportedException.", DiagnosticId="SYSLIB0010", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
abstract member InitializeLifetimeService : unit -> obj
override this.InitializeLifetimeService : unit -> obj
abstract member InitializeLifetimeService : unit -> obj
override this.InitializeLifetimeService : unit -> obj
[<System.Security.SecurityCritical>]
abstract member InitializeLifetimeService : unit -> obj
override this.InitializeLifetimeService : unit -> obj
Public Overridable Function InitializeLifetimeService () As Object
傳回
一個用於控制此實例生命週期政策的物件 ILease 。 如果存在,這是目前該實例的終身服務物件;否則,則會有一個新的終身服務物件,初始化為該 LeaseManagerPollTime 屬性的值。
- 屬性
例外狀況
直接呼叫者沒有基礎設施權限。
僅限 .NET Core 和 .NET 5+:適用於所有情況。
範例
以下程式碼範例示範如何建立租約。
public ref class MyClass: public MarshalByRefObject
{
public:
[System::Security::Permissions::SecurityPermissionAttribute
(System::Security::Permissions::SecurityAction::Demand,
Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)]
virtual Object^ InitializeLifetimeService() override
{
ILease^ lease = dynamic_cast<ILease^>(MarshalByRefObject::InitializeLifetimeService());
if ( lease->CurrentState == LeaseState::Initial )
{
lease->InitialLeaseTime = TimeSpan::FromMinutes( 1 );
lease->SponsorshipTimeout = TimeSpan::FromMinutes( 2 );
lease->RenewOnCallTime = TimeSpan::FromSeconds( 2 );
}
return lease;
}
};
public class MyClass : MarshalByRefObject
{
public override Object InitializeLifetimeService()
{
ILease lease = (ILease)base.InitializeLifetimeService();
if (lease.CurrentState == LeaseState.Initial)
{
lease.InitialLeaseTime = TimeSpan.FromMinutes(1);
lease.SponsorshipTimeout = TimeSpan.FromMinutes(2);
lease.RenewOnCallTime = TimeSpan.FromSeconds(2);
}
return lease;
}
}
type MyClass() =
inherit MarshalByRefObject()
override _.InitializeLifetimeService() =
let lease = base.InitializeLifetimeService() :?> ILease
if lease.CurrentState = LeaseState.Initial then
lease.InitialLeaseTime <- TimeSpan.FromMinutes 1
lease.SponsorshipTimeout <- TimeSpan.FromMinutes 2
lease.RenewOnCallTime <- TimeSpan.FromSeconds 2
lease
Public Class LSClass
Inherits MarshalByRefObject
<SecurityPermissionAttribute(SecurityAction.Demand, _
Flags:=SecurityPermissionFlag.Infrastructure)> _
Public Overrides Function InitializeLifetimeService() As Object
Dim lease As ILease = CType(MyBase.InitializeLifetimeService(), ILease)
If lease.CurrentState = LeaseState.Initial Then
lease.InitialLeaseTime = TimeSpan.FromMinutes(1)
lease.SponsorshipTimeout = TimeSpan.FromMinutes(2)
lease.RenewOnCallTime = TimeSpan.FromSeconds(2)
End If
Return lease
End Function
Public Shared Sub Main()
' The main thread processing is here.
End Sub
End Class
備註
此方法自 .NET 5 起被標記為過時。
欲了解更多終身服務資訊,請參閱課程。LifetimeServices