Ich schreibe einen Wrapper um eine Bibliothek eines Drittanbieters und er hat eine Methode, die von ihm verwalteten Daten zu scannen. Die Methode verwendet eine Rückrufmethode, die für jedes Element in den gefundenen Daten aufgerufen wird.
z.B. Die Methode ist im Wesentlichen: void Scan(Action<object> callback);
Ich möchte es umbrechen und eine Methode wie IEnumerable<object> Scan();
Ist das möglich, ohne auf einen separaten Thread zuzugreifen, um den eigentlichen Scan und einen Puffer durchzuführen?
Sie sollten das Rx-Projekt untersuchen. Dadurch kann eine Ereignisquelle als% co_de verwendet werden %.
Ich bin mir nicht sicher, ob Vanilla-Callbacks als solche dargestellt werden können (es zielt auf .NET-Events ab), aber es lohnt sich, einen regulären Callback als IEnumerable
.
Hier ist ein blockierender Enumerator (die Scan-Methode muss in einem separaten Thread ausgeführt werden)
%Vor% Du könntest es in eine einfache IEnumerable<Object>
einfügen, aber ich würde es nicht empfehlen. IEnumerable
lists bedeutet, dass Sie mehrere Enumeratoren in derselben Liste ausführen können, was in diesem Fall nicht möglich ist.
Tags und Links c# callback enumerable