это последнее средство после многодневного поиска в Google, чтобы попытаться найти окончательный ответ на мой вопрос.
Я создал службу Windows, форму Windows и объект Remoting (все в C #). Я использую объект Remoting для связи между службой и формой, используя события.
Вот упрощенный пример типичного взаимодействия между объектами:
- AdminForm вызывает RemoteObject's метод RequestLoadForm ()
- RemoteObject запускает событие, которое AdminService ожидает для
- AdminService получает предупреждение о событии и вызывает LoadFormData (строковые данные) для RemoteObject
- RemoteObject запускает событие, которое AdminForm прослушивает
- AdminForm получает предупреждение о событии и может использовать строковые данные для установки значений в элементах управления AdminForm
Все это прекрасно работает, все прекрасно взаимодействует в течение первых 5 минут или около того. После этого связь между объектами как-то разорвана, и я больше не могу общаться между объектами.
Первая попытка исправить проблему состояла в том, чтобы переписать метод InitializeLifetimeService, чтобы он возвратил ноль. Это не помогло (хотя и может помочь избежать проблем с арендой в будущем).
Вторая попытка состояла в том, чтобы сделать AdminForm и AdminService ISponsors RemoteObject и настроить их на возобновление аренды объекта. Еще раз не решил проблему.
В моих различных поисках я обнаружил, что кто-то упоминает что-то о том, что обработчики событий собирают мусор. Я не уверен, является ли это проблемой или нет, но я подумал, что упомяну об этом.
Это ошибка, которая появляется после простоя соединения в течение> 5 минут:
Исключение System.Runtime.Remoting.RemotingException не было обработано кодом пользователя
Сообщение = "Запрошенная служба не найдена"
Источник = "system.runtime.remoting"
Теперь странная вещь в том, что это происходит на стороне AdminService . AdminForm вызывает метод для RemoteObject штраф. Это вызывает событие, а затем AdminService видит это событие и пытается вызвать метод LoadFormData (строковые данные) RemoteObject , и именно здесь генерируется исключение.
Я полностью исчерпан поиском в Google, так как не могу найти то, что мне нужно, чтобы это исправить.