我有一类范围
public class avl_range
{
public long start { get; set; }
public long end { get; set; }
}
如果我使用正常的FOR
作品完美,但必须等待每个命令完成并且每个查询需要 8 秒,所以 10 个查询需要 80 秒。
在并行版本中,如果我只打印范围完美,但如果尝试执行命令说已经在进行中。
{“操作已在进行中。”}
我该如何解决这个问题?
var numbers = new List<avl_range>();
using (var conn = new NpgsqlConnection(strConnection))
{
conn.Open();
Action<avl_range> forEachLoop = number => //Begin definition of forLoop
{
// only the console write line works ok
Console.WriteLine(number.start + " - " + number.end);
using (var cmd = new NpgsqlCommand())
{
cmd.Connection = conn;
cmd.CommandText = String.Format( "SELECT * FROM avl_db.process_near_link({0}, {1});"
, number.start
, number.end);
// here cause the error.
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader.GetString(0));
}
}
}
};
Parallel.ForEach(numbers, forEachLoop);
}
);
仅供参考:我试图解决这个问题我之前发布过