Exemple #1
0
 //Запуск нового процесса
 public void StartProcess(string process,                      //Имя процесса
                          params Tuple <string, int>[] bounds) //Ограничения на количества процессов, которые должны быть соблюдены
 {
     while (true)
     {
         lock (_providersLock)
         {
             bool b = false;
             foreach (var bound in bounds)
             {
                 b |= _providers.Get(bound.Item1, 0) >= bound.Item2;
             }
             if (!b)
             {
                 break;
             }
         }
         Thread.Sleep(100);
     }
     lock (_providersLock)
     {
         if (!_providers.ContainsKey(process))
         {
             _providers.Add(process, 1);
         }
         else
         {
             _providers[process]++;
         }
     }
 }
Exemple #2
0
        public static bool GetBool(this DicS <string> dic, string key)
        {
            if (dic == null || !dic.ContainsKey(key))
            {
                return(false);
            }
            string s = dic[key].ToUpper();

            return(s == "TRUE" || s == "ДА");
        }
Exemple #3
0
        public static int GetInt(this DicS <string> dic, string key, int defval = 0)
        {
            int res;

            if (dic == null || !dic.ContainsKey(key) || !int.TryParse(dic[key], out res))
            {
                return(defval);
            }
            return(res);
        }
Exemple #4
0
        //То же самое, но база данных не задается
        public void SaveDicToTable <T>(DicS <T> dic, string tabl, string keyField = "Code", string keyField2 = "", string delField = "Del") where T : ISaveToRecDao
        {
            var old = new SetS();
            var add = new SetS();

            using (var rec = new RecDao(this, tabl, RecordsetTypeEnum.dbOpenTable))
                while (rec.Read())
                {
                    var code = rec.GetString(keyField);
                    if (!keyField2.IsEmpty())
                    {
                        code += "." + rec.GetString(keyField2);
                    }
                    if (dic.ContainsKey(code))
                    {
                        old.Add(code);
                    }
                    else
                    {
                        rec.Put(delField, true);
                    }
                }
            Execute("DELETE * FROM " + tabl + " WHERE " + delField + "=True");

            foreach (var ap in dic.Keys)
            {
                if (!old.Contains(ap))
                {
                    add.Add(ap);
                }
            }
            using (var rec = new RecDao(this, tabl, RecordsetTypeEnum.dbOpenTable))
            {
                while (rec.Read())
                {
                    dic[rec.GetString(keyField) + (keyField2.IsEmpty() ? "" : ("." + rec.GetString(keyField2)))].ToRecordset(rec, false);
                }
                foreach (var p in add.Keys)
                {
                    dic[p].ToRecordset(rec, true);
                }
            }
        }
Exemple #5
0
 //Существует ли поле в рекордсете
 public bool ContainsField(string fname)
 {
     return(_fields.ContainsKey(fname));
 }