我有多线程应用程序需要访问MSSQL。我用静态方法创建了一个类,其中每个方法都是这样的:
public static int [] Login(string [] LoginDetails)
{
using (SqlConnection connection = new SqlConnection(CS))
{
}
这是对的吗?我没有多线程经验,但我想每个线程都会使用它的变量运行这个静态方法的“复制”,因此它们不会被共享。我假设如果我在类级别声明静态成员(如sqlConnection)并使其成为静态,则会被共享,因此会导致并发访问问题。
答案 0 :(得分:3)
并不是它“复制”方法本身,而是每个方法调用(无论是在递归的相同线程中还是在不同的线程中)都会获得它自己独立的局部变量集。
只要这里的数据没有以可变的方式在线程之间共享,你应该没问题。
(顺便说一句,在名称旁边包含类型的数组部分,没有空格更为惯用 - 所以int[]
代替int []
。)