Поскольку я (и многие другие люди в Интернете) не могу настроить тайм-аут TcpChannel на стороне клиента при использовании .NET Remoting (пожалуйста, не предлагайте правильные исправления, я буквально все перепробовал, и никаких предложений WCF, пожалуйста), я придумали то, что кажется достойным обходным путем для создания тайм-аута на стороне клиента, который мы можем настроить. Если я передаю каждый вызов удаленного взаимодействия через отдельный поток таймера, и вызов либо истекает, либо генерирует исключение, тогда я могу убить поток и предположить, что сервер не работает.
Однако я управлял этим другим коллегой, и он был непреклонен в том, что, сделав это, я могу вызвать тупик в машинном коде .NET. Я читал о других примерах этого типа техники, работающих в Интернете, например этот пост здесь, поэтому я не уверен, действительно ли мне следует беспокоиться о тупиковой ситуации. Я вижу, что это может быть проблемой, если поток прерывается в середине отправки или получения чего-либо, но не в том случае, если мы просто ждем ответа.
1 ответ
Поскольку Дэн не отправил ответ, а только прокомментировал, я приписываю этот ответ ему. Кажется, что этот метод управления тайм-аутом подходит, если вы принимаете меры предосторожности, чтобы гарантировать, что выполнение потока не будет продолжено в случае тайм-аута. Я также не рекомендую использовать Thread.Abort, если вы не знаете, что делаете.
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.