【发布时间】:2011-06-24 17:53:24
【问题描述】:
我正在编写一个第三方库的包装器,它有一种方法来扫描它管理的数据。该方法采用一个回调方法,它会为它找到的数据中的每个项目调用该方法。
例如方法本质上是:void Scan(Action<object> callback);
我想包装它并公开一个类似IEnumerable<object> Scan();的方法
如果不借助单独的线程来进行实际扫描和缓冲区,这是否可行?
【问题讨论】:
-
您能否概述一下您的 3rd 方库的确切流程 - 听起来它已经产生了多个线程。还要记住,您可能有一个多播代表。另外,您如何确定扫描已完成?
-
说实话,我看不出这样做的价值。如果你想做
foreach (object obj in scannable.Scan()) { /* do something with obj */ },那真的比scannable.Scan(obj => { /* do something with obj */ });好吗? -
@weismat:不,它没有产生线程,它基本上在内部迭代它的数据存储,并为每条记录调用回调。
-
@Flynn1179:是的,这是可行的,但我正在编写一个包装器供其他人使用,所以希望它尽可能明显......
标签: c# callback enumerable