private static TimeSpan GetDelay(BackgroundParserSubscriptionDelay delay) { const int nearImmediateDelay = 50; const int shortDelay = 250; const int mediumDelay = 500; const int idleDelay = 1500; switch (delay) { case BackgroundParserSubscriptionDelay.NearImmediate: return(TimeSpan.FromMilliseconds(nearImmediateDelay)); case BackgroundParserSubscriptionDelay.Short: return(TimeSpan.FromMilliseconds(shortDelay)); case BackgroundParserSubscriptionDelay.Medium: return(TimeSpan.FromMilliseconds(mediumDelay)); case BackgroundParserSubscriptionDelay.OnIdle: default: return(TimeSpan.FromMilliseconds(idleDelay)); } }
private static TimeSpan GetDelay(BackgroundParserSubscriptionDelay delay) { const int nearImmediateDelay = 50; const int shortDelay = 250; const int mediumDelay = 500; const int idleDelay = 1500; switch (delay) { case BackgroundParserSubscriptionDelay.NearImmediate: return TimeSpan.FromMilliseconds(nearImmediateDelay); case BackgroundParserSubscriptionDelay.Short: return TimeSpan.FromMilliseconds(shortDelay); case BackgroundParserSubscriptionDelay.Medium: return TimeSpan.FromMilliseconds(mediumDelay); case BackgroundParserSubscriptionDelay.OnIdle: default: return TimeSpan.FromMilliseconds(idleDelay); } }
public IDisposable SubscribeToThrottledSemanticModelAvailable(BackgroundParserSubscriptionDelay delay, Action <BackgroundParserEventArgs> callback) { return(Observable.FromEventPattern <BackgroundParserEventArgs>(x => SemanticModelAvailable += x, x => SemanticModelAvailable -= x) .Throttle(GetDelay(delay)) .Subscribe(x => callback(x.EventArgs))); }
public IDisposable SubscribeToThrottledSemanticModelAvailable(BackgroundParserSubscriptionDelay delay, Action<BackgroundParserEventArgs> callback) { return Observable.FromEventPattern<BackgroundParserEventArgs>(x => SemanticModelAvailable += x, x => SemanticModelAvailable -= x) .Throttle(GetDelay(delay)) .Subscribe(x => callback(x.EventArgs)); }