猿问

System.OutOfMemoryException 将数据从超过 200 万行的数据表加载到

我正在尝试将 DataTable 分配为 dataGrid1 dataGrid1.ItemsSource = dtselect.DefaultView 的 itemsource 但它给出 System.OutOfMemoryException


我有一个包含多个 DataTable 的数据集。我在该按钮上随机创建一个按钮单击我想显示从 DataTable 到 dataGrid1 的数据,但这里的问题是 DataTable 有超过 200 万行,当我单击一个按钮时,它需要超过 2gb 的内存并给我系统。内存不足异常。


Button = sender as Button;

                    string content = button.Content.ToString();

                    foreach (DataTable table in dsr.Tables)

                    {

                        if (table.TableName == content)

                        {

                            dataGrid1.ItemsSource = table.DefaultView;

                            dtselect = table;

                        }

                    }

我希望输出更少的内存使用和显示结果而不是 System.OutOfMemoryException


莫回无
浏览 92回答 1
1回答

qq_遁去的一_1

<Viewbox&nbsp;Grid.Row="3"&nbsp;Stretch="Fill"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<DataGrid&nbsp;x:Name="dataGrid1"&nbsp;Grid.Row="3"&nbsp;VirtualizingPanel.VirtualizationMode="Recycling"&nbsp;BorderThickness="0"&nbsp;VirtualizingPanel.IsVirtualizing="True"&nbsp;CanUserSortColumns="True"&nbsp;EnableRowVirtualization="True"&nbsp;IsReadOnly="True"&nbsp;CanUserResizeColumns="True"&nbsp;CanUserAddRows="False"&nbsp;&nbsp;VerticalAlignment="Bottom"&nbsp;&nbsp;HorizontalAlignment="Stretch"&nbsp;VerticalScrollBarVisibility="Auto"&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HorizontalScrollBarVisibility="Auto"&nbsp;ScrollViewer.CanContentScroll="True"&nbsp;Height="600"&nbsp;Width="auto"&nbsp;ItemsSource="{Binding}"&nbsp;AutoGenerateColumns="False"&nbsp;ScrollViewer.VerticalScrollBarVisibility="Auto"&nbsp;&nbsp;&nbsp;Background="#b5d2fc"&nbsp;&nbsp;ClipboardCopyMode="IncludeHeader"&nbsp;SelectionMode="Extended"&nbsp;CanUserDeleteRows="False"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<DataGrid.Columns> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<DataGridTextColumn&nbsp;Width="200"&nbsp;Header="Day"&nbsp;&nbsp;Binding="{Binding&nbsp;Day}"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<DataGridTextColumn&nbsp;Width="200"&nbsp;Header="Date"&nbsp;Binding="{Binding&nbsp;Date}"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<DataGridTextColumn&nbsp;Width="200"&nbsp;Header="Time"&nbsp;Binding="{Binding&nbsp;Time}"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<DataGridTextColumn&nbsp;Width="200"&nbsp;Header="Lat"&nbsp;Binding="{Binding&nbsp;Lat}"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<DataGridTextColumn&nbsp;Width="200"&nbsp;Header="Long"&nbsp;Binding="{Binding&nbsp;Long}"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<DataGridTextColumn&nbsp;Width="400"&nbsp;Header="Address"&nbsp;Binding="{Binding&nbsp;Address}"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<DataGridTextColumn&nbsp;Width="200"&nbsp;Header="Accuracy"&nbsp;Binding="{Binding&nbsp;Accuracy}"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<DataGridTextColumn&nbsp;Width="200"&nbsp;Header="Type"&nbsp;Binding="{Binding&nbsp;Type}"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</DataGrid.Columns> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</DataGrid> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</Viewbox>我只需添加 Viewbox,如果我加载两个以上具有大量数据的文件,我的代码就可以正常工作,那么它消耗的内存也更少
随时随地看视频慕课网APP
我要回答