Я пытаюсь реализовать тайм-аут, когда за период времени нет событий.
Сценарий:
У меня есть объект, который вызывает событие каждый раз при получении сообщения. Я хотел бы реагировать, когда нет сообщений (событий OnReceived), полученных в течение определенного периода времени (скажем, 20 секунд)
Это то, что у меня есть до сих пор
var observable = Observable.FromEventPattern<BasicDeliverEventHandler>(
handler => _innerConsumer.Received += OnReceived,
handler => _innerConsumer.Received -= OnReceived);
var timeout = observable.Timeout(TimeSpan.FromSeconds(20));
using (timeout.Subscribe(_ => { },
exception =>
Tracer.Warning("Eventing Consumer timeout : {0}", exception.Message)))
{ }
Я создаю наблюдаемое из EventPattern. Затем, используя тайм-аут. Чего я не понимаю, так это того, как получить исключение из тайм-аута. Я хочу реагировать, когда это происходит.
Я не думаю, что метод подписки является правильным, но это я понял из документации. Я открыт для предложений или других альтернатив, если это не правильно.
заранее спасибо
using. Это немедленно отменяет вашу подписку, что не позволяет вашим уведомлениям достигать наблюдателя. - person cwharris   schedule 19.11.2013