Esempio n. 1
0
        // IDisposable IToastHostCore.SubscribeToastPushing(IObservable<IToastViewModel> observable)
        // {
        //     return observable?.ObserveOn(RxApp.MainThreadScheduler)
        //         .Subscribe(Pushing);
        // }

        private void Pushing(IToastViewModel viewModel)
        {
            if (viewModel == null)
            {
                return;
            }

            lock (_sync)
            {
                _queue.Enqueue(viewModel);
            }
        }
Esempio n. 2
0
        protected internal void ToastIntern(IToastViewModel toast)
        {
            if (toast == null)
            {
                return;
            }

            if (!_toastStream.HasObservers)
            {
                //
                //
                Debug.WriteLine("No ToastHost Listen to toast queue");
            }
            else
            {
                _toastStream.OnNext(toast);
            }
        }
Esempio n. 3
0
        private void Dispatching(object?sender, EventArgs e)
        {
            if (_queue.Count <= 0)
            {
                if (_current != null && _current.LastAccessBy + _current.Offset < DateTime.Now)
                {
                    Toast = null;
                }
                return;
            }

            if (_current is null)
            {
                lock (_sync)
                {
                    _current = _queue.Dequeue();
                    _current.LastAccessBy = DateTime.Now;
                    Toast = new Toast {
                        DataContext = _current
                    };;
                }
            }

            if (_current == null || _current.LastAccessBy + _current.Offset >= DateTime.Now)
            {
                return;
            }

            //
            // 当当前内容已经失效的时候

            _current = _queue.Dequeue();
            _current.LastAccessBy = DateTime.Now;
            Toast = new Toast
            {
                DataContext = _current
            };;
        }