Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以1ms速率(WPF)在C#datagrid上显示数据_C#_Wpf_Datagrid_Display - Fatal编程技术网

以1ms速率(WPF)在C#datagrid上显示数据

以1ms速率(WPF)在C#datagrid上显示数据,c#,wpf,datagrid,display,C#,Wpf,Datagrid,Display,我正在开发一个C#应用程序,在这里我每1毫秒获得一次USB数据,我的应用程序有一个数据网格,它打算在收到这些帧后立即显示这些帧。我这里的问题是,由于数据速率太高,我的网格在启动10-15秒后停止或应用程序冻结。我已经创建了单独的线程来处理这个显示部分,尽管它对我没有帮助。数据网格是否能够以1ms的速率显示数据?我应该用其他方法让它工作吗?任何帮助、暗示或建议都会大有裨益。 多谢各位 代码:gui()函数作为线程生成,datatable作为参数传递。下面的驱动程序接收的数据将数据添加到datata

我正在开发一个C#应用程序,在这里我每1毫秒获得一次USB数据,我的应用程序有一个数据网格,它打算在收到这些帧后立即显示这些帧。我这里的问题是,由于数据速率太高,我的网格在启动10-15秒后停止或应用程序冻结。我已经创建了单独的线程来处理这个显示部分,尽管它对我没有帮助。数据网格是否能够以1ms的速率显示数据?我应该用其他方法让它工作吗?任何帮助、暗示或建议都会大有裨益。 多谢各位

代码:gui()函数作为线程生成,datatable作为参数传递。下面的驱动程序接收的数据将数据添加到datatable,然后作为gui()funtn的参数传递


你能显示一些你已经尝试过的初始代码吗?1ms。当第一个请求完成时,您不能发送第二个请求吗?由于数据以高速呈现,您必须使用虚拟化概念。使用ListView代替Datagrid,因为它具有虚拟化功能。你可以找到一个很好的讨论我已经编辑和添加的代码,请看一看@Janonimu以这样的频率更新用户界面毫无意义。它甚至都看不见。您应该将数据排队,并每秒更新DataGrid 20或30次。
    public static DataView dataview = new DataView();
    public static void gui(DataTable dt)
    {
         try
            {
                if (dt != null)
                {
                    lock (Lock)
                    {
                                                   Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Send, new Action(delegate()
                        {
                            main.dgUsers.ItemsSource = null;
                            dataview = dt.DefaultView;
                            main.dgUsers.ItemsSource = dataview;
                            main.dgUsers.Items.Refresh();


                            //For auto scroll through the data grid
                            if (main.dgUsers.Items.Count > 0)
                            {
                                var border = VisualTreeHelper.GetChild(main.dgUsers, 0) as Decorator;
                                if (border != null)
                                {
                                    var scroll = border.Child as ScrollViewer;
                                    if (scroll != null) scroll.ScrollToEnd();
                                }
                            }
                        }));
                    }
                }
         }

         catch (Exception e)
         {
             MessageBox.Show(e.Message);
         }
    }