1

关于基于事件的循环的论点已经说了很多,实现并行性和和之间的Thread区别Task<T>。我想引用

任务和线程有什么区别?

这清楚地解释了 a 如何Task<T>是一个承诺,而线程可能是用来实现它的手段之一。

这个另一个问题代替了介绍的第一点

.NET 中是否可以使用 C# 实现基于事件的异步模式而无需多线程?

问题来了。我正在考虑如何设计一个可重用的.NET 基础结构类型,当特定事件发生时可以调用委托。当然,我已经评估了第二个问题提供的所有参考资料,但我觉得我仍然需要进行更多调查。

我想实现类似的目标:

var sched = new Scheduler(new DefaultSchedulingStrategy());
var listnr = new TcpListener();
sched.DefineEventSource<Socket>(listnr.AcceptSocketAsync);
shed.OnEvent(
  (socket) = {
    // handling socket here
  });

我知道这似乎非常接近Task.Factory.FromAsync<T>。无论如何,我在这里想要实现的也是能够改变不同工作负载的调度策略,并尝试尽可能多地抽象激活事件的逻辑。

我还考虑过用 F# 编写一个简单的调度程序(例如基于代理),创建一个 C# 友好的可重用库,然后用 C# 编写服务器的其余部分(因为它是我目前的主要开发语言)。

我希望我足够清楚(抱歉,英语不是我的主要语言)。

4

1 回答 1

1

在我了解了Reactive Extensions的美妙世界之后,我总是向所有想要对复杂事件处理做点什么的人推荐它们。这里也有很好的介绍这项技术。我猜这对您的需求很有用。

于 2013-02-17T22:31:25.277 回答