私は、次のコード...ADO.NETロックオブジェクト
private DbTransaction Transaction;
private readonly object TargetObject = new object();
public CustomDataReader GetDataReader(CustomCommand command)
{
DbDataReader reader = null;
lock (TargetObject) // what is the purpose of this lock?
{
DbCommand cmd = ProviderFactory.CreateCommand();
cmdConnection = Connection;
cmd.CommandText = command.Script;
cmd.Transaction = Transaction;
foreach (CommandParameter param in command.Parameters)
{
cmd.Parameters.Add(Parse(param));
}
OpenConnection();
if (Transaction == null)
{
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
else
{
reader = cmd.ExecuteReader();
}
}
return new CustomDataReader(reader);
}
を持っている私はlock(TargetObject)
の目的が何であるかを理解しようとしていますか?コマンドを実行するときにトランザクションを使用するとき、なぜそのロック機構を使用しますか?
複数のC#スレッドが同時にコードを実行するのを防ぐためです。どうして?誰がコードを書いたかを尋ねる。 – Blorgbeard
@Blorgbeard:男は建物を離れました。 – user2818430