我正在做一个C#Windows窗体应用程序,它从API下载文件,解压缩这些文件并将它们解析到数据库中。 我的问题出在解析部分。关于“应用程序处于休息模式”的其他线程并没有说明.Load()
发生这种情况的原因。
我执行Openrowset查询来读取数据库中的文件。它读得很好。然后我做了那个读者的dataTable.Load()
。 然后,应用程序被该库中抛出的内部异常停止。它只是打断了。我没有得到有关异常的信息。这是代码的基本部分(真正的查询太长了,我把这个作为例子):
private DataTable dataTable;
public void loadDataTable()
{
dataTable = new DataTable();
dataTableConsumo.Load(queryExecutor.ExecuteReader("SELECT * FROM Prices", connection));
}
public SqlDataReader ExecuteReader(String query, SqlConnection connection)
{
SqlCommand comando = new SqlCommand(query, connection);
comando.CommandTimeout = 0;
return comando.ExecuteReader();
}
CSV文件非常庞大。它有1700万行。 当我.Load()
然后.WriteToServer
(做一个新实例)时,我尝试加载文件前200000并且工作正常到DataTable并在基于总行的分区循环的每次迭代时强制GC调用,但只有2-3次。在第四次加载时,它就会停止。它不是关于记忆的,因为我一直在控制它。我尝试了很多东西。一些截图:
非帮助消息让我做恶梦并且不让我看到异常甚至调试代码:
任何帮助将不胜感激。非常感谢你的时间。
答案 0 :(得分:0)
好吧,它似乎是一个Visual Studio错误。它发生在WinForms应用程序中,并不重要。该应用程序刚刚停止,但您可以再次恢复它,它可以正常工作。
如果将WinForms应用程序移植到自动控制台应用程序,则永远不会发生这种情况。问题部分解决了。