項目中遇到一個問題,對方同時調用我的一個接口,導致返回的數據重復
1.簡單粗暴的解決方法,給出問題的接口加個鎖(互斥鎖 Lock)
//鎖,解決並發問題
private static object newObjectlock = new object();
/// <summary> /// 有問題的方法 /// </summary> /// <param name="stockInApply"></param> /// <returns></returns> public ResultServiceModel SendStockInApply(WCSStockInApplyServiceModel stockInApply) { lock (newObjectlock) //鎖 {
//調用的接口 } }
作用:將會鎖住代碼塊的內容,並阻止其他線程進入該代碼塊,直到該代碼塊運行完成,釋放該鎖。
注意:定義的鎖對象應該是 私有的,靜態的,只讀的,引用類型的對象,這樣可以防止外部改變鎖對象