Ich spiele also nur mit RX herum und lerne es. Ich habe angefangen, mit Events zu spielen, und wollte wissen, wie man Events abonniert und die Ergebnisse asynchron in Batches verarbeitet. Erlauben Sie mir, das mit Code zu erklären:
Einfache Klasse, die Ereignisse auslöst:
public class EventRaisingClass
{
public event EventHandler<SomeEventArgs> EventOccured;
//some other code that raises event...
}
public class SomeEventArgs : EventArgs
{
public SomeEventArgs(int data)
{
this.SomeArg = data;
}
public int SomeArg { get; private set; }
}
Dann mein Main:
public static void Main(string[] args)
{
var eventRaiser = new EventRaisingClass();
IObservable<IEvent<SomeEventArgs>> observable =
Observable.FromEvent<SomeEventArgs>(e => eventRaiser.EventOccured += e, e => eventRaiser.EventOccured -= e);
IObservable<IList<IEvent<SomeEventArgs>>> bufferedEvents = observable.BufferWithCount(100);
//how can I subscribte to bufferedEvents so that the subscription code gets called Async?
bufferedEvents.Subscribe(list => /*do something with list of event args*/); //this happens synchrounously...
}
Wie Sie in meinen Kommentaren sehen können, wenn Sie nur subscribe wie das aufrufen, geschieht der gesamte Abonnement-Code synchron. Gibt es eine Möglichkeit, out of the box mit RX zu haben, die Subscribe auf verschiedenen Threads aufgerufen werden, wenn es eine neue Charge von Ereignissen zu arbeiten?