Почему время ожидания моего объекта удаленного взаимодействия C # истекает, даже если Lifetime возвращает значение null?

это последнее средство после многих дней поиска в Google, чтобы попытаться найти окончательный ответ на мой вопрос.

Я создал службу Windows, форму Windows и объект удаленного взаимодействия (все в C #). Я использую объект Remoting для связи между службой и формой с помощью событий.

Вот упрощенный пример типичного взаимодействия между объектами:

  • AdminForm вызывает метод RequestLoadForm RemoteObject. ()
  • RemoteObject запускает событие, которое AdminService прослушивает
  • AdminService , получает предупреждение о событии и вызывает LoadFormData (строковые данные) на ] RemoteObject
  • RemoteObject запускает событие, что AdminForm прослушивает
  • AdminForm , получает предупреждение о событии и может использовать строковые данные для установки значений в элементах управления AdminForm

Это все работает нормально, все прекрасно взаимодействует первые 5 минут или около того. После этого связь между объектами каким-то образом прерывается, и я больше не могу общаться между объектами.

Первой попыткой решения проблемы было перезапись метода InitializeLifetimeService для возврата значения null. Это не помогло (хотя может избежать проблем с арендой в будущем).

Вторая попытка заключалась в том, чтобы сделать мои AdminForm и AdminService спонсорами RemoteObject , и настроить их на продление аренды объекта. Еще раз не устранил проблему.

В различных поисковых запросах я обнаружил, что кто-то упоминал что-то об обработчиках событий, собирающих мусор. Я не уверен, проблема в этом или нет, но я подумал, что упомяну об этом.

Это ошибка, которая появляется после того, как соединение простаивает более 5 минут:

System.Runtime.Remoting .RemotingException не было обработано кодом пользователя
Message = "Запрошенная служба не найдена"
Source = "System.Runtime.Remoting"

Самое странное в этом то, что это происходит на стороне AdminService . AdminForm вызывает метод для удаленного объекта RemoteObject . Это вызывает событие, а затем AdminService видит это событие и пытается вызвать метод LoadFormData (строковые данные) RemoteObject , и здесь возникает исключение.

Я совершенно измотан поиском в Google, так как не могу найти то, что мне нужно, чтобы исправить.

9
задан John Saunders 3 September 2011 в 23:45
поделиться