用DataTables时并发访问量较大,单个任务操作(获取数据)时间较长。连接数过多的时候就出现InvalidOpertionException错误。
知道哪里有问题那就好办了,对GetDataTable(string sql):DataTable方法用线程锁 lock() ,这样就不会出现上述问题。类型问题也可以这样解决。
代码:
private static readonly object olock = new object(); public static DataTable GetDataTable(string sql) { lock (olock) { SqlDataAdapter sda = new SqlDataAdapter(sql, connection); DataTable dt = new DataTable(); sda.Fill(dt); sda.Dispose(); return dt; } }