c# - LINQ To SQL 线程安全

标签 c# multithreading linq-to-sql thread-safety datacontext

我想问一下下面的代码是否是线程安全的: 考虑 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);
        }        
    }
}

提前致谢

最佳答案

在这种情况下,不,这不是问题,因为每个线程都会获得一个单独的 DataContext 实例,因为每个方法都会导致创建一个新的实例。如果 DataContext 在线程之间共享,您将遇到问题,因为实例方法不是线程安全的 see MSDN

关于c# - LINQ To SQL 线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13037470/

相关文章:

c# - 在 C# 中设置的简单属性的非线程安全是什么?

c++ - 多CPU多线程中的多线程

c# - 选择 child 记录的有效方法?

c# - 延迟执行 - 字典输出

c# - FluentValidation - 值必须是可分配的;参数名称 : left

c# - 检查哈希表集合中是否存在键/值对

javascript - 一旦获得焦点,将 RadioButton 值设置为 true,然后点击 asp :RadioButton 中的 Enter 按钮

c - 如何评估无锁队列的性能?

java - 限制线程数和 Java 并发性

c# - LINQ to SQL 十进制参数