using System; using System.Collections.Generic; using System.Text; using System.Threading; using WCS.Data.Utils; namespace WCS.Workflow { public class SingLetonClass { private static readonly object obj = new object(); public static bool GetLock(string method, string convNo) { bool result = false; lock (obj) { if (convNo == "1112" || convNo == "1518" || convNo=="1114")//7# { result = GetLock_Pvc_7(method, convNo); } else if (convNo == "1107" || convNo == "1504")//6# { result = GetLock_Pvc_6(method, convNo); } else if (convNo == "1099")//5# { result = GetLock_Pvc_5(method, convNo); } else if (convNo == "1092")//4# { result = GetLock_Pvc_4(method, convNo); } } return result; } public static bool ReleaseLock(string convNo) { if (convNo == "1112" || convNo == "1518")//7# { return Interlocked.CompareExchange(ref _processing_Pvc_7, 0, 1) == 0; } else if (convNo == "1107" || convNo == "1504")//6# { return Interlocked.CompareExchange(ref _processing_Pvc_6, 0, 1) == 0; } else if (convNo == "1099")//5# { return Interlocked.CompareExchange(ref _processing_Pvc_5, 0, 1) == 0; } else if (convNo == "1092")//4# { return Interlocked.CompareExchange(ref _processing_Pvc_4, 0, 1) == 0; } else { return false; } } private static int _processing_Pvc_4;//处理中 private static bool GetLock_Pvc_4(string method,string convNo) { if (Interlocked.CompareExchange(ref _processing_Pvc_4, 1, 0) != 0) { LogMessageHelper.RecordLogMessage(string.Format("执行失败,方法[{0}]输送线[{1}]处理正在执行中", method, convNo)); return false; } return true; } public static bool ReleaseLock_Pvc_4() { return Interlocked.CompareExchange(ref _processing_Pvc_4, 0, 1) == 0; } private static int _processing_Pvc_5;//处理中 private static bool GetLock_Pvc_5(string method, string convNo) { if (Interlocked.CompareExchange(ref _processing_Pvc_5, 1, 0) != 0) { LogMessageHelper.RecordLogMessage(string.Format("执行失败,方法[{0}]输送线[{1}]处理正在执行中", method, convNo)); return false; } return true; } public static bool ReleaseLock_Pvc_5() { return Interlocked.CompareExchange(ref _processing_Pvc_5, 0, 1) == 0; } private static int _processing_Pvc_6;//处理中 private static bool GetLock_Pvc_6(string method, string convNo) { if (Interlocked.CompareExchange(ref _processing_Pvc_6, 1, 0) != 0) { LogMessageHelper.RecordLogMessage(string.Format("执行失败,方法[{0}]输送线[{1}]处理正在执行中", method, convNo)); return false; } return true; } public static bool ReleaseLock_Pvc_6() { return Interlocked.CompareExchange(ref _processing_Pvc_6, 0, 1) == 0; } private static int _processing_Pvc_7;//处理中 private static bool GetLock_Pvc_7(string method, string convNo) { if (Interlocked.CompareExchange(ref _processing_Pvc_7, 1, 0) != 0) { LogMessageHelper.RecordLogMessage(string.Format("执行失败,方法[{0}]输送线[{1}]处理正在执行中", method, convNo)); return false; } return true; } public static bool ReleaseLock_Pvc_7() { return Interlocked.CompareExchange(ref _processing_Pvc_7, 0, 1) == 0; } } }