Exemplo n.º 1
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);
            }
        }
Exemplo n.º 2
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;
 }