【发布时间】:2014-06-11 06:51:55
【问题描述】:
我正在尝试实现一个返回迭代器的异步函数。思路如下:
private async Task<IEnumerable<char>> TestAsync(string testString)
{
foreach (char c in testString.ToCharArray())
{
// do other work
yield return c;
}
}
但是,由于Task<IEnumerable<char>> 不是迭代器接口类型,因此有错误消息指出该函数不能是迭代器块。有解决办法吗?
【问题讨论】:
-
请注意,这只是说 首先获取可枚举 是异步的 - 它不会使其成为任何类型的异步枚举器。你真正想做的是什么?因为我怀疑这不会实现。
-
我想运行这个函数来处理工作线程上的流,并在 UI 线程上消耗等待的结果。
-
如果您想使用
yield,因为您的平台没有async/await,请查看Stephen Toubs'sIterate。 -
这似乎很适合TPL DataFlow。
标签: c# .net asynchronous iterator clr