gpt4 book ai didi

c# - 响应式框架 (RX) 和异步处理事件

转载 作者:行者123 更新时间:2023-11-30 15:47:46 25 4
gpt4 key购买 nike

所以我只是在玩弄 RX 并学习它。我开始玩 Events,想知道如何订阅事件,并异步批量处理结果。请允许我用代码来解释:

引发事件的简单类:

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...

}

正如您在我的评论中看到的那样,当您像那样调用订阅时,所有订阅代码都会同步发生。有没有开箱即用的方法,只要有新的一批事件要处理,就可以使用 RX 在不同的线程上调用订阅?

最佳答案

bufferedEvents.ObserveOn(Scheduler.TaskPool).Subscribe(...

SubscribeOn 是指定发生所谓的“订阅副作用”的时间表。例如,您的可观察对象可以在每次有人订阅时打开一个文件。

ObserveOn 是指定每次有新值时调用观察者的调度。在实践中,它比 SubscribeOn 更常用。

关于c# - 响应式框架 (RX) 和异步处理事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3215019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com