LINQ to SQL线程安全

pan*_*nis 3 c# datacontext multithreading thread-safety linq-to-sql

我想问下面的代码是否是线程安全的:考虑Save1和Save2将同时执行.datacontext的线程安全性有问题吗?

public class Test1()
{
    private void Save1()
    {        
        using(TestLinqToSQL obj = new TestLinqToSQL())
        {        
             obj.SaveRecord(new Client (){Id = 1, Name = "John Doe");
        }
    }

    private void Save2()
    {        
         using(TestLinqToSQL obj = new TestLinqToSQL())
         {        
             obj.SaveRecord(new Client (){Id = 2, Name = "Mike Tyson");
         }
    }         
}



public class TestLinqToSQL : IDisposable
{
    public void SaveRecord(Client newClient)
    {
        using(ClientDatacontext cont = new ClientDatacontext())
        {
            cont.InsertRecord(newClient);
        }        
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢

Tre*_*ley 6

在这种情况下,不是没有问题,因为每个线程将获得一个单独的DataContext实例,因为每个方法都会导致创建一个新的.如果DataContext在线程之间共享,则会出现问题,因为实例方法不是线程安全的,请参阅MSDN

  • 我不会说"潜在",它几乎可以肯定是一个巨大的问题. (4认同)