【问题标题】:Is ok for implementations of IEnumerator.MoveNext() to include a long running process?IEnumerator.MoveNext() 的实现是否可以包含一个长时间运行的进程?
【发布时间】:2014-06-18 00:30:01
【问题描述】:

IEnumerator.MoveNext() 的实现是否预计会相对较快?或者如果“移动到下一项” 包括磁盘 IO、Web 请求或其他可能长时间运行的操作,是否可以?

例如,我正在处理一个处理文档的项目,并希望将对文档的访问抽象为IDocumentSourceIDocumentSource 的一些实现可能只是从本地文件系统中提取文档,而其他人可能会在打开文件之前将文档从网络服务器下载到临时位置。在这种情况下,MoveNext() 将关闭并删除之前的临时文件,然后下载并打开下一个要处理的文件。

【问题讨论】:

  • 如果不是“快”,我会比较不安;但更是如此。
  • 是的,我同意这一点。即使它不是 IEnumerator 的记录最佳实践

标签: ienumerator


【解决方案1】:

没有关于 MoveNext() 预期性能的指导方针,这与针对属性 getter 的指导方针不同。

你的方法看起来很合理。不过,明智的做法是在类/方法文档中包含有关行为的注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-07
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2019-06-13
    • 1970-01-01
    相关资源
    最近更新 更多