public void AppendGift(GiftCacheManager.GiftCache item)
        {
            Dispatcher.Invoke(() =>
            {
                DanmakuPanel.Children.Add(new Gift(item));
                if (!DanmakuScrollViewer.IsMouseOver)
                {
                    DanmakuScrollViewer.ScrollToBottom();
                }
                CleanDanmakuTime = DateTime.UtcNow.AddSeconds(0.2);
            });

            if (CleanDanmakuTask == null || CleanDanmakuTask.IsCompleted)
            {
                CleanDanmakuTask = Task.Factory.StartNew(CleanPanel);
            }
        }
        public void AppendRoomBlock(BiliLiveJsonParser.RoomBlock item)
        {
            Dispatcher.Invoke(() =>
            {
                DanmakuPanel.Children.Add(new RoomBlock(item));
                if (!DanmakuScrollViewer.IsMouseOver)
                {
                    DanmakuScrollViewer.ScrollToBottom();
                }
                CleanDanmakuTime = DateTime.UtcNow.AddSeconds(0.2);
            });

            if (CleanDanmakuTask == null || CleanDanmakuTask.IsCompleted)
            {
                CleanDanmakuTask = Task.Factory.StartNew(CleanPanel);
            }
        }
        public void AppendGift(BiliLiveJsonParser.Gift item)
        {
            Dispatcher.Invoke(() =>
            {
                //if (Gift.AppendGiftToExist(item))
                //    return;
                DanmakuPanel.Children.Add(new Gift(item));
                if (!DanmakuScrollViewer.IsMouseOver)
                {
                    DanmakuScrollViewer.ScrollToBottom();
                }
                CleanDanmakuTime = DateTime.UtcNow.AddSeconds(0.2);
            });

            if (CleanDanmakuTask == null || CleanDanmakuTask.IsCompleted)
            {
                CleanDanmakuTask = Task.Factory.StartNew(CleanPanel);
            }
        }