public class siteInfo : IDisposable
{
public string sitename;
public double temp;
public List<double> lst_temp = null;
public siteInfo(string _sitename)
{
this.sitename = _sitename;
this.lst_temp = new List<double>();
}
public void Dispose() {}
}
double temp = 0;
public static Dictionary<string, siteInfo> dictSite = new Dictionary<string, siteInfo>();
siteInfo site1 = new siteInfo("site1");
dictSite.Add("site1", site1);
siteInfo site2 = new siteInfo("site2");
dictSite.Add("site2", site2);
void updateData()
{
foreach(KeyValuePair<string, siteInfo> site in dictSite)
{
temp = temp + 1;
site.Value.temp = temp;
site.Value.lst_temp.Add(temp); // <===
}
}
class의 멤버 변수들은 많은데, 우선 위에 정리한 코드처럼 Dictionary에 요소로 class를 정의하고, class는 List를 멤버로 가지고 있습니다. dictionary의 데이터를 업데이트하기 위해 foreach문을 이용해서 데이터 갱신을 하면서 List에 데이터를 추가할려고 합니다.
이때 temp 데이터는 갱신이 됩니다. 그런데 List는 함수내에서는 데이터 Add 후, List의 Count가 1이 되었다가 다시 함수가 호출되면, Count가 0이 됩니다.
class의 IDisposable 및 Dispose()를 삭제해도 안되고, foreach 문은 dictionary의 내용이 수정이 안된다는 글도 있어서 for 문을 사용해도 동일한 증상입니다.
이렇게 사용하면 안되는 것인지요? 아니면 다르게 데이터를 관리하는 유사한 방법이 있을까요?