Example #1
0
        /// <summary>
        /// Генерация общей статистики активных визуальных элементов.
        /// </summary>
        public void CalculateVisualControlStat()
        {
            ItemsRealDataNameActivated.Clear();
            ItemsRealActivated.Clear();
            ItemsRealActivatedCount = 0;

            /*
             * foreach (ItemReal item in ItemsReal)
             * {
             *  count = item.GetVisualControlActivatedCount();
             *  if (count > 0)
             *  {
             *      ItemsRealActivatedCount++;
             *      ItemsRealActivated.Add(item);
             *      ItemsRealDataNameActivated.Add(item.DataName);
             *  }
             *  VisualActivatedCount += count;
             * }
             */
            foreach (KeyValuePair <string, int> item in VisualControlDict)
            {
                ItemsRealDataNameActivated.Add(item.Key);
                ItemReal itemReal;
                if (ItemsRealDict.ContainsKey(item.Key))
                {
                    itemReal = ItemsRealDict[item.Key];
                }
                else
                {
                    itemReal = new ItemReal();
                }
                ItemsRealActivated.Add(itemReal);
            }
            ItemsRealActivatedCount = VisualControlDict.Count;
        }
Example #2
0
        /// <summary>
        /// Основная функция, которая выполняется в главном потоке.
        /// </summary>
        void ThreadMain_WorkChanged(object sender, EventArgs e)
        {
            CalculateVisualControlStat();
            if (!ItemsInited)
            {
                if (!InitItemsBusy)
                {
                    ItemsReal.Clear();
                    ItemsRealDict.Clear();
                    if (Mode == ModeType.Real || Mode == ModeType.Debug)
                    {
                        DataClient.GetItemsFullAsync();
                        DataClient.GetSqlCurrentTimeAsync();
                        DataClient.GetDateTimeOffsetAsync();
                    }
                    else
                    {
                        DataClient_GetItemsFullCompleted(this,
                                                         new GetItemsFullCompletedEventArgs(new object[] { GetDemoItemSqls() }, null, false, null));

                        DataClient_GetSqlCurrentTimeCompleted(this,
                                                              new GetSqlCurrentTimeCompletedEventArgs(new object[] { DateTime.Now }, null, false, null));

                        DataClient_GetDateTimeOffsetCompleted(this,
                                                              new GetDateTimeOffsetCompletedEventArgs(new object[] { new DateTimeOffset(DateTime.Now) }, null, false, null));
                    }
                    InitItemsBusy = true;
                }
            }
            if (ItemsInited)
            {
                T0Short = DateTime.Now;
                //DataClient.GetItemsShortAsync();

                if (Mode == ModeType.Real || Mode == ModeType.Debug)
                {
                    DataClient.GetItemsShortByDataNamesAsync(ItemsRealDataNameActivated);
                }
                else
                {
                    DataClient_GetItemsShortByDataNamesCompleted(this,
                                                                 new GetItemsShortByDataNamesCompletedEventArgs(new object[] { GetDemoItemSqlSimples(ItemsRealDataNameActivated) }, null, false, null));
                }
            }

            if (sender == ThreadMain)
            {
                Thread.Sleep((int)ShortUpdateTime.TotalMilliseconds + 10);
            }
        }
Example #3
0
 /// <summary>
 /// Получение элемента, удовлетворяющего искомому имени.
 /// </summary>
 public ItemReal GetItemReal(string dataName)
 {
     /*
      * foreach (ItemReal item in ItemsReal)
      *  if (item != null && item.DataName == dataName)
      *      return item;
      */
     // Для повышения быстродействия.
     if (!string.IsNullOrEmpty(dataName) && ItemsRealDict.ContainsKey(dataName))
     {
         return(ItemsRealDict[dataName]);
     }
     return(null);
 }
Example #4
0
 /// <summary>
 /// Обработчик события на завершение вызова функции инициализации элементов.
 /// </summary>
 void DataClient_GetItemsFullCompleted(object sender, GetItemsFullCompletedEventArgs e)
 {
     if (e.Error == null)
     {
         foreach (ItemSql itemReal in e.Result)
         {
             ItemReal item = new ItemReal()
             {
                 DataName    = itemReal.DataName,
                 Trend       = itemReal.Trend,
                 Description = itemReal.Description,
                 Unit        = itemReal.Unit,
                 FormatValue = itemReal.FormatValue,
                 MinValue    = itemReal.MinValue,
                 MaxValue    = itemReal.MaxValue,
                 DataType    = (ItemReal.DataTypeSimple)itemReal.DataType,
                 DataValue   = itemReal.DataValue,
                 Quality     = itemReal.Quality,
                 SqlTime     = itemReal.SqlTime,
                 DeviceTime  = itemReal.DeviceTime,
                 TimeOut     = itemReal.TimeOut,
                 Comment     = itemReal.Comment
             };
             ItemsReal.Add(item);
             ItemsRealDict.Add(itemReal.DataName, item);
         }
         if (e.Result.Count > 0)
         {
             ItemsInited = true;
             InvokeUIControlInitItems();
         }
     }
     else
     {
         InitFaultCount++;
         ItemsInited = false;
         if (Mode == ModeType.Real || Mode == ModeType.Debug)
         {
             RecreateDataClient();
         }
     }
     InitItemsBusy = false;
     LoadTime      = DateTime.Now - T0;
 }