这听起来像你可能真正在寻找的是类似的东西IObservable<T>,这就像一个基于推送的异步IEnumerable<T>。请参阅Reactive Extensions,即 Microsoft Open Technologies的Rx(代码为Apache-2.0许可的代码)(无隶属关系),其中包含大量与IObservable<T>LINQ to Objects以及其他更多工作相关的方法。 问题IEnumerable<T>在于没有任何东西确实使枚举本身异步。如果你不想增加对Rx的依赖(这实际上是让你IObservable<T>发光的原因),这个选择可能适用于你: public async Task<IEnumerable<char>> TestAsync(string testString)
{
return GetChars(testString);
}
private static IEnumerable<char> GetChars(string testString)
{
foreach (char c in testString.ToCharArray())
{
// do other work
yield return c;
}
}
如果不知道异步实际做了什么,可能有更好的方法来实现你的目标。... 展开详请