Delphi Event Bus 2.1发布了
Delphi Event Bus 这个开源项目发布了,这是我用到的最好的开源项目,强烈推荐给大家。
前期也有写过这方面的文章,如果你还不知道,可以学习一下,这里不多说了,这个版本改动不大,但意义重大,使用了自己内部的线程池来管理自己的线程,支持Delphi 11.1,强烈建议升级。
我查看了代码,就是就是在TEventBus类中声明了一个FDebThreadPool:
TEventBus = class(TInterfacedObject, IEventBus) strict private FDebThreadPool: TThreadPool;
然后呢,在调用订阅任务时:
{$IF CompilerVersion >= 28.0} TTask.Run(LProc, FDebThreadPool);
这里,使用自己的线程池对象来执行线程任务了,注意,这里使用了系统的编译变量CompileVersion>=28,也就是最新的Delphi 11,才使用自己的线程池。关于编译变量CompileVersion对应的Delphi版本,可以参考这篇文章:Delphi编译器版本对照表及工具链
作者为什么要只在Delphi 11才使用自己的线程池呢?按我的理解,就是说明Delphi 11的TThreadPool对象才成熟吧,即然这样写,那对于使用Delphi 11以前版本的用户,没有必要升级了。
下面是我写的如何使用Event Bus的文章,可以复习下:
Delphi Event Bus入门
Delphi Event Bus进阶(一)控制订阅方法的线程模式
Delphi Event Bus进阶(二)GlobalEventBus是怎么来的?
Delphi Event Bus进阶(三)如何使用通道?
这是开源地址:
https://www.github.com/spinettaro/delphi-event-bus