TimeSpan CurrentLeaseTime { get; }

 LeaseState CurrentState { get; }

 TimeSpan InitialLeaseTime { get; set; }

 TimeSpan RenewOnCallTime { get; set; }

 TimeSpan SponsorshipTimeout { get; set; }

 void Register(System.Runtime.Remoting.Lifetime.ISponsor obj);

 void Register(System.Runtime.Remoting.Lifetime.ISponsor obj, TimeSpan renewalTime);

 TimeSpan Renew(TimeSpan renewalTime);

 void Unregister(System.Runtime.Remoting.Lifetime.ISponsor obj);

}

Интерфейс ILease не только позволяет получить информацию о текущих параметрах лизинга (с помощью CurrentLeaseTime, CurrentState и InitialLeaseTime), но и обеспечивает возможность построения "спонсоров" лизинга (более подробно об этом будет говориться позже). Роль каждого из членов ILease описана в табл. 18.6.

Таблица 18.6. Члены интерфейса ILease

Член Описание
CurrentLeaseTime Читает информацию о времени, оставшемся до отключения данного объекта при отсутствии новых вызовов методов объекта
CurrentState Читает информацию о текущем состоянии лизинга, представленную значением перечня LeaseState
InitialLeaseTime Читает или устанавливает исходное время лизинга. Исходное время лизинга – это время от начала активизации объекта до истечения лизинга при отсутствии новых вызовов методов объекта
RenewOnCallTime Читает или устанавливает значение времени, на которое вызов удаленного объекта увеличивает значение CurrentLeaseTime
SponsorshipTimeout Читает или устанавливает значение времени ожидания спонсора для возвращения времени возобновления лизинга
Register Перегруженный метод, регистрирующий спонсора данного лизинга
Renew Возобновляет лизинг с указанным временем
Unregister Удаляет указанный спонсор из списка спонсоров

Для иллюстрации особенностей лизинга по умолчанию для удаленных СAО-типов и WKO-синглетов определим в нашем текущем проекте CAOCarGeneralAsm новый внутренний класс LeaseInfo. Статический член LeaseStats этого класса выводит информацию о текущем лизинге для типа CarProvider в окно консоли сервера (не забудьте указать директиву using для пространства имен System.Runtime.Remoting.Lifetime, чтобы сообщить компилятору о месте нахождения определении типа ILease).

internal class LeaseInfo {

 public static void LeaseStats(ILease itfLease) {

  Console.WriteLine(***** Информация о лизинге *****");

  Console.WriteLine("Состояние лизинга: {0}", itfLease.CurrentState);

  Console.WriteLine("Начальное время лизинга: {0}:{1}", itfLease.InitialLeaseTime.Minutes, itfLease.InitialLeaseTime.Seconds);

  Console.WriteLine("Текущее время лизинга: {0}:{1}", itfLease.CurrentLeaseTime.Minutes, itfLease.CurrentLeaseTime.Seconds);

  Console.WriteLine("Обновление времени при вызове: {0}:{1}", itfLease.RenewOnCallTime.Minutes, itfLease.RenewOnCallTime.Seconds);

  Console.WriteLine;

 }

}

Перейти на страницу:

Похожие книги