我正在处理现有的应用程序。该应用程序从一个巨大的文件中读取数据,然后在进行一些计算后,将数据存储在另一个表中。
但是这样做的循环(见下文)需要很长时间。由于该文件有时包含 1,000 条记录,因此整个过程需要数天时间。
我可以foreach
用别的东西代替这个循环吗?我尝试使用Parallel.ForEach
,它确实有帮助。我是新手,所以会感谢你的帮助。
foreach (record someredord Somereport.r)
{
try
{
using (var command = new SqlCommand("[procname]", sqlConn))
{
command.CommandTimeout = 0;
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(…);
IAsyncResult result = command.BeginExecuteReader();
while (!result.IsCompleted)
{
System.Threading.Thread.Sleep(10);
}
command.EndExecuteReader(result);
}
}
catch (Exception e)
{
…
}
}
查看答案后,我删除了 Async 并使用如下编辑代码。但这并没有提高性能。
using (command = new SqlCommand("[sp]", sqlConn))
{
command.CommandTimeout = 0;
command.CommandType = CommandType.StoredProcedure;
foreach (record someRecord in someReport.)
{
command.Parameters.Clear();
command.Parameters.Add(....)
command.Prepare();
using (dr = command.ExecuteReader())
{
while (dr.Read())
{
if ()
{
}
else if ()
{
}
}
}
}
}