/// <summary> /// Производит обсчёт расположения лэйблов значений и пытается максимально раздвинуть их между собой /// </summary> private void CalculateLabelPosition() { var tasks = BuildColons().Select(_ => Task.Factory.StartNew(() => { var helper = new DataColonLabelHelper { LabelHeight = LabelHeight, ScaleMax = FirstScale.Max, ScaleMin = FirstScale.Min, Height = Preferences.Height, Order = ColonDataItemOrder.Real }; helper.Clear(); foreach (var dataItem in _) { helper.Add(dataItem); } helper.EnsureBestLabels(); })).ToArray(); Task.WaitAll(tasks); }