/// <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); } }
/// <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; }