我有一个范围的课程。
如果我使用普通的
在并行版本中,如果只打印范围,一切都很完美,但是如果尝试执行该命令,则会显示已经在进行中。
“已经有一个操作正在进行中。”
我该如何解决这个问题?
FYI:我正在尝试解决这个问题,我之前已经发布了它 在此之前。
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);
}
);
FYI:我正在尝试解决这个问题,我之前已经发布了它 在此之前。
NpgsqlConnection
怎么样? - Botond Botos