【发布时间】:2015-08-07 05:37:26
【问题描述】:
如果我从多个线程调用一些数据访问方法,我是否需要锁定数据库调用周围的代码以确保一致性,或者下面的 using 语句是原子的?
public static DataRow GetData(Int32 id)
{
using (SqlConnection con = new SqlConnection(connectionString);)
{
con.Open();
SqlCommand cmd = ...
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(...)
cmd.Parameters.Add(...)
DataTable dt = new DataTable();
return new SqlDataAdapter(cmd).FillWithRetry(dt, sqlGetEmail.CommandText);
}
}
我认为一个线程不会影响另一个线程定义的和“正在使用”的连接对象。
【问题讨论】:
-
你想一次打开一个连接吗?
-
不,我不介意多连接,只要返回的数据一致即可。
-
你不更新它怎么可能不一致?
-
我正在考虑在 cmd.Parameters.Add 语句之间或在 add 和 execute 之间切换线程。
标签: c# multithreading concurrency thread-safety