示例#1
0
        public IDisposable MonitorState(string item, Action <string> updatedStateCallback)
        {
            var hasCache = itemState.TryGetValue(item, out var oldstate);

            var monitor = new MonitorDisposable(this, item, updatedStateCallback);

            lock (monitors)
            {
                monitors.Add(monitor);
            }
            EnsureBackgroundTaskState();

            GetState(item).ContinueWith(t =>
            {
                if (t.IsCompletedSuccessfully)
                {
                    if (hasCache && oldstate == t.Result)
                    {
                        monitor.Callback(t.Result);
                    }
                }
            });

            return(monitor);
        }
示例#2
0
        private void StopMonitoring(MonitorDisposable disposable)
        {
            lock (monitors)
            {
                monitors.Remove(disposable);
            }

            EnsureBackgroundTaskState();
        }