当RichTextBox被大量数据泵送时[UI变得无响应[重复]

问题描述 投票:-1回答:1

我正在开发一个GUI,用户可以在其中连接到服务器并读取数据。数据需要显示在GUI上。为此,我使用的TabControl的ContentTemplate设置为RichTextBox。

[当用户单击连接按钮时,UI连接到TCP服务器。在这里,我产生了一个新线程,该线程从服务器读取数据。但是,当将大量数据泵送到RTB之后,UI变得无响应。我无法在屏幕内移动该应用程序。

有什么方法可以动态删除较旧的数据(新数据将在下面添加),以免RTB加载过多,并且UI应该可以正常工作。此外,该应用程序在“任务管理器”中的“进程”下利用多达80个CPU。

private void BtnConnect_Click(object sender, RoutedEventArgs e)
        {
            //connect
            TCPClientClass tcpClient = TCPConnHandler.ConnectToService(tbIPAddress.Text);
            if (tcpClient != null)
            {
                MessageBox.Show("Connected to " + tbIPAddress.Text);
                //open new tab
                var item = MainWindowVMObj.AddTabItem();

                Thread thTabControl = new Thread(() =>
                {
                    while (tcpClient.Connected)
                    {
                        String str = tcpClient.GetDataFromServer();
                        if (!String.IsNullOrEmpty(str))
                            tabControl1.Dispatcher.BeginInvoke((Action)(() => item.Content += str));
                        Thread.Sleep(200);
                    }
                    //item.Dispatcher.BeginInvoke
                });

                thTabControl.Start();
            }
        }

我正在开发一个GUI,用户可以在其中连接到服务器并读取数据。数据需要显示在GUI上。为此,我使用TabControl,其ContentTemplate设置为RichTextBox。当...

c# wpf richtextbox
1个回答
2
投票
他们收到了多少
© www.soinside.com 2019 - 2024. All rights reserved.