Как заставить клиента C # показывать сообщение об истечении времени ожидания, если сервер не ответил в течение 10 секунд - PullRequest
0 голосов
/ 06 апреля 2011

Мне нужно написать клиент и сервер на C #, и клиент должен отправить запрос на сервер, и если сервер не ответил в течение 10 секунд, показать сообщение об истечении времени ожидания. Клиент и сервер находятся в консоли.

Теперь, мой первый вопрос, является ли класс System.Threading.Timer лучшим способом сделать это, или я должен посмотреть на асинхронные вызовы делегатов (после прочтения их, потому что я даже не понимаю, что они такое, Я только что предложил им) или любой другой метод? Кроме того, если я хочу использовать класс Timer, я понимаю, что TimerCallback, который является первым аргументом класса Timer, например

Timer timer = new Timer(tcb);

- это метод, который выполняется, когда срабатывает таймер, но что мне делать, когда мне не нужно выполнять какие-либо методы каждый раз, когда срабатывает таймер, но я хочу показать сообщение после того, как таймер завершит отсчет, скажем, 10 секунд?

Я просмотрел множество статей и сообщений на форуме msdn.microsoft.com по этому вопросу, но большинство людей хотят выполнять метод для каждого таймера или использовать асинхронные вызовы, и все это очень запутанно.

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

Как ваш клиент-сервер будет общаться?

В большинстве методов связи вы можете установить тайм-аут для вызова клиента.

Я рекомендую вам использовать WCF для связи клиент-сервер.

1 голос
/ 06 апреля 2011

Один из подходов состоит в том, чтобы сделать асинхронный запрос, используя WebRequest (или что-то подобное) и указав время ожидания.Если запрос не возвращается вовремя, он должен выдать исключение, которое вы затем можете обработать, отобразив ваше сообщение.

Или вы можете использовать таймер, а в методе обратного вызова таймера вы можете отобразить ваше сообщение.Если вы используете этот подход, при возврате вашего вызова потребуется остановить таймер, чтобы предотвратить отображение сообщения.Таймер будет «тикать» только так часто, как вы указали, и после первого «тика» вы можете остановить таймер, чтобы он не работал более одного раза.

...