我有一组名为AnalysisResult
. 该数组可以包含数十万个对象;而且,有时我只需要Distinct()
该数组的元素。因此,我编写了一个名为的项目比较器类AnalysisResultDistinctItemComparer
,并像这样进行调用:
public static AnalysisResult[] GetDistinct(AnalysisResult[] results)
{
return results.Distinct(new AnalysisResultDistinctItemComparer()).ToArray();
}
我的问题是,当数组特别大(超过 200,000 个对象)时,此调用可能需要很长时间(大约几分钟)。
我目前在后台工作人员中调用该方法并显示一个旋转的 gif 以提醒用户该方法正在执行并且应用程序尚未冻结。这一切都很好,但它并没有给用户任何关于当前进度的指示。
我确实需要能够向用户指示此操作的当前进度;但是,我一直无法想出一个好的方法。我正在玩这样的事情:
public static AnalysisResult[] GetDistinct(AnalysisResult[] results)
{
var query = results.Distinct(new AnalysisResultDistinctItemComparer());
List<AnalysisResult> retVal = new List<AnalysisResult>();
foreach(AnalysisResult ar in query)
{
// Show progress here
retVal.Add(ar);
}
return retVal.ToArray();
}
但问题是我无法知道我的实际进展是什么。想法?建议?