我有一个方法Foo.LongRunningMethod()
,它执行一些可能会持续很长时间的非常复杂的处理。一路上,只要遇到一定的情况,它就会触发Foo.InterestingEvent
。我希望能够展示这些事件的枚举,并且我希望能够在LongRunningMethod
实际完成之前开始迭代。换句话说,我想是这样的:使用来自事件处理程序的良率
public IEnumerable<InterestingObject> GetInterestingObjects()
{
foo.InterestingEvent += (obj) => { yield return obj; }
foo.LongRunningMethod();
yield break;
}
这不起作用,但是,对于合理的理由,你不能从yield return
匿名方法(因为使用yield
不能返回的方法void
,我们的事件处理程序)。还有另外一个成语可以让我完成这个吗?或者这只是一个坏主意?
他何时何地说这些?我能读什么来了解更多关于推拉的信息? – zsf222 2016-08-29 11:08:48