【发布时间】:2018-12-06 07:13:48
【问题描述】:
private void newBtn_Click(object sender, RoutedEventArgs e)
{
try
{
if (txtDayfind.Text == "" || txtDatefind.Text == "" ||
txtTimefind.Text == "" || txtLatfind.Text == "" ||
txtLongfind.Text == "" || txtAddressfind.Text == "" ||
txtaccuracy.Text == "" || txtTypefind.Text == "")
{
Button 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;
}
}
}
else
{
dataGrid1.ItemsSource = dtselect.DefaultView;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我正在尝试将数据从 DataTable 显示到 Datagrid,但 DataTable 包含超过 20 万行,因此它给出了 System.OutOfMemoryException。而且我无法显示数据并且应用程序停止工作。
请帮我解决System.OutOfMemoryException 这个问题。
我有一个包含多个表的数据集,当 DataTable 有小数据时它可以正常工作,但是当 DataTable 有大数据时它会消耗更多空间并给出 System.outofmemoryexception。
【问题讨论】:
-
不要一次加载所有数据,只检索屏幕上显示的数据并使用分页来加载其余数据
-
它是windows应用程序,我还没完成分页,请你帮我写代码。
-
AFAIU 您处于 32 位模式,您可以尝试切换到 64 位以允许您的应用使用更多内存,但无论如何我同意其他人在这里需要分页。
-
是他们的任何其他方式,而不是分页这样做