Я разрабатываю веб-страницу с помощью asp.net с использованием C#.lock (object) in C#
У меня есть код, который является критическим. Я хочу, чтобы только один пользователь мог получить доступ к этому разделу кода за раз.
Я использовал следующий код
string doc_number = "";
try {
lock (lock1) {
doc_number = PostSalaryToSAP();
// doc_number = "";
if (doc_number.Length > 6) {
this.Result.Text = "Posting Successful For Employee id '" + cbEmpID.SelectedItem.Text.ToString() + "' With Doc_number : " + doc_number;
this.Result.ForeColor = System.Drawing.Color.Green;
this.btnPost.Enabled = false;
this.btnDelete.Enabled = false;
} else {
this.Result.Text = "Posting Failed ";
this.Result.ForeColor = System.Drawing.Color.Green;
}
}
} catch (Exception ex1) {
Result.Text = "Posting Unsuccessful ";
Result.ForeColor = System.Drawing.Color.Green;
}
, но с этим кодом эти результаты не получают генерироваться должным образом. Обычно эта строка добавляет одну запись в таблицу db:
doc_number = PostSalaryToSAP();
Но с использованием этого кода он добавляет 2 строки. Какова реальная проблема, которую я не могу понять? Пожалуйста, помогите
какой замок1? Обычно это: private static readonly object lock1 = new object(); – row1
Я думаю, что это не имеет никакого отношения к заявлению о блокировке? Вероятно, ваш код выполняется дважды по стоп-лоту. – Jehof