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;
}
}