public async Task BuildDuplicatesResolverView(int[] ids, bool resolveTimeouts, bool resolveSameTime, bool resolveSlowest, bool resolveInErrors)
        {
            var handle = uiService.StartIndicateLongOperation("Resolving duplicates...");

            try
            {
                for (int i = 0; i < ids.Length; i++)
                {
                    int eid = ids[i];

                    bool resolved = false;
                    do
                    {
                        var results = await manager.GetResults(eid);

                        var duplicates = DuplicateResolver.Resolve(results.Benchmarks, resolveTimeouts, resolveSameTime, resolveSlowest, resolveInErrors, conflicts => uiService.ResolveDuplicatedResults(eid, conflicts));

                        if (duplicates == null)
                        {
                            uiService.ShowInfo("Duplicates resolution cancelled.", "Resolution cancelled");
                            return; // cancelling operation
                        }
                        if (duplicates.Length > 0)
                        {
                            resolved = await results.TryDelete(duplicates);

                            if (resolved)
                            {
                                uiService.ShowInfo(string.Format("{0} item(s) removed from the experiment {1}.", duplicates.Length, eid), "Duplicates resolved");
                            }
                            else
                            {
                                if (!uiService.AskYesNo(
                                        string.Format("Results of the experiment {0} have been changed since resolution started. Resolve again?", eid),
                                        "Conflict when saving results"))
                                {
                                    return;
                                }
                            }
                        }
                        else
                        {
                            resolved = true;
                            uiService.ShowInfo("There are no duplicates in the experiment " + eid, "No duplicates");
                        }
                    } while (!resolved);
                }
            }
            catch (Exception ex)
            {
                uiService.ShowError(ex, "Error when resolving duplicates");
            }
            finally
            {
                uiService.StopIndicateLongOperation(handle);
            }
        }