У меня есть объект, созданный в главном приложении, и я могу получить к нему удаленный доступ с помощью удаленного взаимодействия. Могу ли я проверить соединение, чтобы убедиться, что оно все еще «живо»? Может быть, событие, которое я могу использовать, которое срабатывает, если удаленное соединение отключается, или какое-то свойство, которое может сообщить мне состояние удаленного соединения. Есть ли что-то подобное?





Обычно я добавляю еще один метод к классу удаленного сервера MarshallByRef, (Обычно я называю это Ping (), например:
public void Ping() {}
который ничего не делает и ничего не возвращает .. Затем, чтобы "проверить" мое соединение, я вызываю этот метод ... Если он генерирует исключение System.Net.Sockets.Exception, я теряю соединение ....
Какая польза вам будет от проверки связи? Даже если вы пингуете его, это не означает, что в следующий момент соединение все еще будет активным, когда вы сделаете свой удаленный вызов.
Просто попробуйте / поймайте ваши удаленные звонки, и вы узнаете.
Этот тип проверок не имеет смысла (сетевое соединение, блокировка файлов и т. д.). Ведь состояние вещи, которую вы проверяете, может измениться сразу после проверки. Вы просто лоток и очистите / повторите попытку, если это не удается.
Поскольку объект, которым я управляю удаленно, размещен в приложении Windows. Если приложение не запущено, я хочу перезапустить его.
то же самое - если вызов не удался, перезапустите. как я уже сказал, пинг почти такой же, за исключением того, что это еще один вызов, поскольку он никоим образом не гарантирует, что следующий вызов будет успешным или что приложение не закроется до или во время следующего вызова.
Я искал решение, аналогичное тому, что искал @Jeremy, и идея «Ping» сработала бы и для меня. @Sunny прав, гораздо лучше обрабатывать исключение на базовом уровне, так как удаленный объект вполне может закрыться сразу после теста Ping.
Спасибо, я полагаю, вы подтвердили мое подозрение, что во фреймворке не было возможности предоставить мне эту функциональность. Этот метод проверки связи должен работать нормально. Спасибо