#c# #wpf #wcf
#c# #wpf #wcf
Вопрос:
Что я пытаюсь сделать, так это запустить таймер в фоновом режиме при получении ответа от сервера. И если время превышает примерно 5 секунд, тогда покажите какое-нибудь сообщение.
Я пробовал другие типы таймеров, но не смог понять, как запустить это в другом потоке.
Моя проблема в том, что когда он начинает выполняться Subscribe()
с клиента (метод, который отмечен атрибутом OperationContract на стороне сервера), он останавливается на этой строке кода и ожидает, окно зависает и примерно через 15 секунд выдает только исключение тайм-аута.
Я хотел бы обработать это исключение до его срабатывания, установив этот таймер, чтобы клиенту также не нужно было так долго ждать, чтобы узнать, что сервер не запущен.
Мой код:
try
{
//...
/* starting timer here */
//my service client instance calling Subscribe method
ServiceClientInstance.Client().Subscribe(/*username*/);
//closing the channel
ServiceClientInstance.Client().Close();
//...
}
catch (CommunicationObjectAbortedException)
{
//some other operation after exception is handled
}
Комментарии:
1. Если вы запустите таймер асинхронно, будет сложно создать исключение в потоке ответа.
2. Какой таймер выполняется синхронно ?
3. В качестве примера таймер диспетчера, секундомер, диспетчер. Ну, по крайней мере, у меня они не сработали. @EZI
4. либо запустите вызов на сервер в другом потоке, либо лучше используйте асинхронные вызовы wcf
5. Используйте асинхронные вызовы методов в WCF и установите время ожидания равным 5 секундам, а не управляйте этим самостоятельно.