So can't create several DataReader in parallel and read from them?
It seems it doesn't.
But anyway currently in such a case NullReferenceException happens which is bad I believe.
Code: Select all
var cmd1 = con.CreateCommand();
cmd1.CommandText = "select * from t1";
var cmd2 = con.CreateCommand();
cmd2.CommandText = "select * from t2";
DbCommand[] cmds = {cmd1, cmd2};
Console.WriteLine("Run parallel commands");
Parallel.ForEach(cmds, (cm) => {
var tag = cm.CommandText + ":" ;
Console.WriteLine(tag + "begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
using(var reader = cm.ExecuteReader())
{
Console.WriteLine(tag + "execute: " + System.Threading.Thread.CurrentThread.ManagedThreadId);
while(reader.Read())
{
Console.WriteLine(tag + "read");
Console.WriteLine(tag + reader[0]);
}
}
Console.WriteLine(tag + "done");
});
Console.WriteLine("done");
at Devart.Data.PostgreSql.e.b(Boolean A_0)