だから私はRXで遊んで学んでいます。私はイベントをいじり始め、イベントをサブスクライブする方法と、結果をバッチで非同期的に処理する方法を知りたがっていました。コードで説明させてください:
イベントを発生させる単純なクラス:
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; }
}
それから私のメイン:
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...
}
私のコメントでわかるように、そのように subscribe を呼び出すと、すべてのサブスクリプション コードが同期的に実行されます。作業するイベントの新しいバッチがあるときはいつでも、RX を使用して別のスレッドでサブスクライブを呼び出す方法はありますか?