From 460fc40ccd9f8b8ef8b943e20fa9b4ec27c683f9 Mon Sep 17 00:00:00 2001 From: kyh <1329522@naver.com> Date: Tue, 6 Dec 2022 13:39:10 +0900 Subject: [PATCH] =?UTF-8?q?lock=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Million/Manager/InteratorScripter.cs | 85 +++++++++++++++------------- 1 file changed, 45 insertions(+), 40 deletions(-) diff --git a/Million/Manager/InteratorScripter.cs b/Million/Manager/InteratorScripter.cs index 1161cdf..123ae92 100644 --- a/Million/Manager/InteratorScripter.cs +++ b/Million/Manager/InteratorScripter.cs @@ -16,6 +16,9 @@ namespace Million.Manager public string regularExpressionString; public string Name; + //Remmeber dic 관련 에러 처리를 위한 Lock obj + private object obj = new object(); + /// /// 캐쉬 Dictionary /// @@ -38,62 +41,64 @@ namespace Million.Manager public bool DicExcuteScript(Dictionary RegularExpression) { var cloneRex = RegularExpression.ToDictionary(x => x.Key, x => x.Value); - - try + lock (obj) { - //중복 검사 - Dictionary data = null; - - foreach(var key in rememberDic.Keys) + try { - bool checker = true; - if(key.Count == cloneRex.Count) + //중복 검사 + Dictionary data = null; + + foreach (var key in rememberDic.Keys) { - foreach(var keyStr in key.Keys) + bool checker = true; + if (key.Count == cloneRex.Count) { - if(cloneRex.ContainsKey(keyStr)) + foreach (var keyStr in key.Keys) { - if (key[keyStr] != cloneRex[keyStr]) + if (cloneRex.ContainsKey(keyStr)) + { + if (key[keyStr] != cloneRex[keyStr]) + checker = false; + } + else + { checker = false; - } - else - { - checker = false; + } } } + else + { + checker = false; + } + + if (checker) + { + data = key; + break; + } + } + if (data != null) + { + return rememberDic[data]; } else { - checker = false; - } + var returnData = ScriptExcute(ChangeScript(regularExpressionString, cloneRex)); + rememberDic[cloneRex] = returnData; - if(checker) - { - data = key; - break; + var str = "Name : " + Name + ",\r\nregularExpressionString : " + regularExpressionString + ",\r\n RegularExpression : " + + JsonConvert.SerializeObject(cloneRex) + ",\r\n Result : " + returnData.ToString() + + ",\r\n RememberDic : " + JsonConvert.SerializeObject(rememberDic) + "\r\n"; + + LogManager.WriteLog(str); + + return returnData; } } - if (data != null) + catch (Exception e) { - return rememberDic[data]; + throw e; } - else - { - var returnData = ScriptExcute(ChangeScript(regularExpressionString, cloneRex)); - rememberDic[cloneRex] = returnData; - - var str = "Name : " + Name +",\r\nregularExpressionString : " + regularExpressionString + ",\r\n RegularExpression : " - + JsonConvert.SerializeObject(cloneRex) + ",\r\n Result : " + returnData.ToString() - + ",\r\n RememberDic : " + JsonConvert.SerializeObject(rememberDic) + "\r\n"; - - LogManager.WriteLog(str); - - return returnData; - } - } - catch (Exception e) - { - throw e; } }