public Task WarmUp()
        {
            var  dispatcher    = this.GetRequiredService <IDispatcherService>();
            var  awaiter       = this.GetService <IUIAwaiter>();
            var  target        = ActiveBenchmarkItem.Target;
            var  uiControl     = ActiveHostItem.Target.UIControl;
            int  warmUpCounter = BenchmarkItem.GetWarmUpCounter(ActiveBenchmarkItem.Type);
            Task coldRun       = IsCold ? ColdRun() : Prepare(dispatcher, awaiter);

            return(coldRun.ContinueWith(_ =>
            {
                long result = 0;
                for (int i = -2 /*pre-warmup*/; i < warmUpCounter; i++)
                {
                    if (i == -1)
                    {
                        if (result > 5000)
                        {
                            warmUpCounter = 5;
                        }
                        if (result > 15000)
                        {
                            warmUpCounter = 3;
                        }
                    }
                    if (i == 0)
                    {
                        result = 0;
                    }
                    result += DoCycle(dispatcher, awaiter, target, uiControl).Result;
                }
                warmUpResult = Math.Max(1, result / warmUpCounter);
                dispatcher.BeginInvoke(() =>
                {
                    this.RaisePropertyChanged(x => x.Result);
                    this.RaiseCanExecuteChanged(x => x.Run());
                });
            }));
        }