Надеюсь, вы поможете мне прояснить мое понимание безопасности потоков и вызовов методов в Singleton.
Ниже я обрисовал простой сценарий.У меня такой вопрос: если ProcessorOne и ProcessorTwo работают одновременно, и если класс DatabaseIntegration является ссылочным типом и является одноэлементным (управляемым CastleWindsor), а ProcessorOne и ProcessorTwo совместно используют этот одноэлементный экземпляр DataBaseIntegration, то есть потенциал дляОбъект, сохраненный ProcessorOne, чтобы иметь имя из ProcessorTwo?
Значение может ли параметр Entity, передаваемый в databaseIntegration.Save (Entity entity) посредством ProcessorOne, изменяться потоком, в котором выполняется ProcessorTwo, после того, как поток ProcessorOne выполняет вызов метода?
public class ProcessorOne
{
private readonly DatabaseIntegration databaseIntegration;
public ProcessorOne(DatabaseIntegration databaseIntegration)
{
this.databaseIntegration = databaseIntegration;
}
public void Process()
{
Entity entity = new Entity()
{
Name="NameOne"
};
this.dataBaseIntegration.Save(entity);
}
}
public class ProcessorTwo
{
private readonly DatabaseIntegration dataBaseIntegration;
public ProcessorTwo(DatabaseIntegration dataBaseIntegration)
{
this.dataBaseIntegration = dataBaseIntegration;
}
public void Process()
{
Entity entity = new Entity()
{
Name="NameTwo"
};
this.dataBaseIntegration.Save(entity);
}
}
public class DatabaseIntegration
{
public void Save(Entity entity)
{
using (DbContext context = new DbContext(sqlConnection))
{
context.Entity.Add(entity);
context.SaveChanges();
}
}
}