Утечка памяти.NET Remoting?

У меня есть класс Remoting как синглтон

<configuration>
   <system.runtime.remoting>
      <application>
         <service>
            <wellknown 
               mode="Singleton" 
               type="PTSSLinkClasses.PTSSLinkClientDesktopRemotable, PTSSLinkClasses" 
               objectUri="PTSSLinkDesktop" />
         </service>
         <channels>
            <channel ref="http" port="8901"/>
         </channels>
      </application>
   </system.runtime.remoting>
</configuration>

Его создали в рамках "серверной" службы. Другая клиентская служба использует этот удаленный объект. Клиент вызывает удаленный объект каждую 0,5 секунды, используя таймер (опрос) (для тестирования)

Если служба сервера остановлена, поэтому удаленный объект недоступен, использование памяти для службы клиента продолжает расти......

Я перезаписал InitialLifetimeService, чтобы вернуть ноль

public override Object InitializeLifetimeService()
        {
            return null;
        }

Если удаленный объект недоступен, делает ли.net очередь всех запросов на вызов к этому объекту??? пока вся память не расходуется? Как можно определить, что удаленный объект недоступен, и перестать пытаться вызвать удаленный метод?

1 ответ

.NET Remoting не ставит в очередь вызовы удаленных объектов. Если удаленный объект больше недоступен и вы вызываете для него метод, вы должны получить исключение (WebException, RemotingException), что запрошенная служба не найдена.

Я думаю, что ваша проблема где-то еще. Может быть, вы игнорируете возможное исключение в своем коде и неправильно его обрабатываете.

Используете ли вы тот же таймер снова для вызова удаленного объекта, или вы каждые пять секунд создаете новый таймер для вызова удаленного объекта?

Другие вопросы по тегам