C# QueryHistory中的IEnumerable移动到第一个变更集大约需要10秒

C# QueryHistory中的IEnumerable移动到第一个变更集大约需要10秒,c#,ienumerable,C#,Ienumerable,我正在从事的一个项目要求我获取包含大约300个条目的文件夹的历史记录 正如标题所说,当我第一次调用MoveNext()方法时,大约需要7秒钟才能完成。这是正常的行为,还是应该考虑实现一个自定义IEnumerator接口来加快速度 下面是一段代码,显示了我所说的内容 System.Collections.IEnumerable histEnumerable = vcs.QueryHistory( item.SourceServerPath, VersionSpec.Latest,

我正在从事的一个项目要求我获取包含大约300个条目的文件夹的历史记录

正如标题所说,当我第一次调用MoveNext()方法时,大约需要7秒钟才能完成。这是正常的行为,还是应该考虑实现一个自定义IEnumerator接口来加快速度

下面是一段代码,显示了我所说的内容

System.Collections.IEnumerable histEnumerable = vcs.QueryHistory(
   item.SourceServerPath, 
   VersionSpec.Latest, 
   0, 
   RecursionType.Full, 
   "", 
   null, 
   null, 
   Int32.MaxValue, 
   true, 
   false);
System.Collections.IEnumerator histEnumerator = histEnumerable.GetEnumerator();
histEnumerator.MoveNext(); //This method will take about 7 seconds to complete.

在此方面的任何帮助都将不胜感激,谢谢。

听起来QueryHistory的实现是在做一些前期工作,这使得获得第一件物品的成本很高。您最好的选择可能是将其放在后台线程中。我会去看一看。您应该能够非常轻松地将其转换为推送模型,并在数据进入时无需阻塞地处理数据

您可以这样做:


histEnumerable.ToObservable(Scheduler.TaskPool).Subscribe(a=>DoSomething(a))

我没有使用这个确切的方法,但是你让我考虑在后台使用它。我的最终解决方案是调用查询历史记录两次,并限制第一次调用的结果量。我只是让第二个枚举在后台运行,并让它在第一个枚举结束的地方继续运行。谢谢