希望您能帮助我澄清我对线程安全和引用类型的多个实例的理解。
我在下面概述了一个简单的场景。我的问题是:如果 ProcessorOne 和 ProcessorTwo 同时运行,并且 DatabaseIntegration 类是引用类型并且 ProcessorOne 和 ProcessorTwo 都有自己的 DataBaseIntegration 实例,那么 ProcessorOne 保存的实体是否有可能具有名称来自 ProcessorTwo 的阻止?
public class ProcessorOne
{
private readonly DatabaseIntegration databaseIntegration;
public ProcessorOne(DatabaseIntegration databaseIntegration)
{
this.databaseIntegration = databaseIntegration;
}
public void Process()
{
this.databaseIntegration.SetName("NameOne")
Entity entity = new Entity()
this.dataBaseIntegration.Save(entity);
}
}
public class ProcessorTwo
{
private readonly DatabaseIntegration dataBaseIntegration;
public ProcessorTwo(DatabaseIntegration dataBaseIntegration)
{
this.dataBaseIntegration = dataBaseIntegration;
}
public void Process()
{
this.databaseIntegration.SetName("NameTwo")
Entity entity = new Entity()
this.dataBaseIntegration.Save(entity);
}
}
public class DatabaseIntegration
{
private string entityName;
public void SetName(string entityName)
{
this.entityName = entityName;
}
public void Save(Entity entity)
{
entity.EntityName = this.entityName;
using (DbContext context = new DbContext(sqlConnection))
{
context.Entity.Add(entity);
context.SaveChanges();
}
}
}
不,它们会有不同的名称,因为正如您所说,在您的代码中,每个类都有不同的 DatabaseIntegration 实例。
因此 ProcessorOne 的 dataBaseIntegration 名称为“NameOne”,而 ProcessorTwo 的 dataBaseIntegration 名称为“NameTwo”。
问候。
我是一名优秀的程序员,十分优秀!