0
我正在用asp.net開發一個使用C#的網頁。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行。什麼是我無法理解的實際問題?請幫助
什麼是lock1?它通常是:private static readonly object lock1 = new object(); – row1 2012-02-22 07:29:35
我認爲這與鎖定聲明無關?你的代碼可能會在callstack上執行兩次。 – Jehof 2012-02-22 07:29:57