private static void DataSetTableColumnChanged(object sender, DataColumnChangeEventArgs e)
        {
            new Thread(() =>
            {
                if (e.Column.ColumnName != "ONOFF")
                {
                    lock (SaveFile)
                    {
                        SaveFile.SaveFile = 1;
                    }
                }
            }).Start();

            string IOName = e.Row["IOName"] as string;

            if (IOName != "")
            {
                DataTable dt      = sender as DataTable;
                string    cn      = dt.DataSet.DataSetName;
                string    cln     = e.Column.ColumnName;
                string    content = "";
                if ("CheckStatus" == cln)
                {
                    checkStatusType ct = (checkStatusType)e.Row[e.Column.ColumnName];
                    content = Enum.GetName(typeof(checkStatusType), ct);
                }
                else
                {
                    content = e.Row[e.Column.ColumnName] as string;
                }
                DateTime now             = DateTime.Now;
                IODataChangeContainer id = new IODataChangeContainer(now, cn, cln, IOName, content);
                AddChangeDict(id);
            }
        }
 private static void AddChangeDict(IODataChangeContainer id)
 {
     RemoveDuplication(id);
     lock (dataUpdateList)
     {
         dataUpdateList.Add(id);
     }
 }
        private static void RemoveDuplication(IODataChangeContainer id)
        {
            List <IODataChangeContainer> tp;

            lock (dataUpdateList)
            {
                tp = new List <IODataChangeContainer>(dataUpdateList);
            }
            var d = from dd in tp
                    where (dd.cname == id.cname) && (dd.type == id.type) && (dd.iname == id.iname)
                    select dd.time;

            lock (dataUpdateList)
            {
                foreach (DateTime dt in d)
                {
                    dataUpdateList.Remove(dataUpdateList.Find(o => o.time == dt));
                }
            }
        }