摘要:当软件启动时,我们希望从配置文件中加载参数,然后用这些参数,改变窗口的状态大小,或者组件的属性。 通常的做法是在 TForm 的 OnCreate 事件中或者 OnFirstShow 事件中执行这些任务。 但是,但某些改变窗口的语句, 在这些事件中执行时,是会发生冲突的。比如:在 OnShow 事件
阅读全文
摘要:经过多年的打磨,用一种简洁通用的写法来实现多线程任务,以此来给线程教程一个大结局。 用LIST来实现简洁功能的线程池,希望给大家一些帮助! 源码下载
阅读全文
摘要:在编程开发的时候,我们时常会调用windows本身的功能,如:检测网络通断,连接无线wifi等。 虽然,用 windows api 操作可以完美地完成这些操作,但是,函数参数太难了。令人望而生畏,不是普通开发者能办到的。 但是,我们可以用一种变通的方法,来解决这个问题,就是使用控制台命令行,如 pi
阅读全文
摘要:面向对象编程手法,是一项综合技能,单独把谁拿出来说都不合适。本次重写 TSimpleThread ,使其能在 D7 下运行。 基于 TSimpleThread ,重磅推出 TSimpleUI.ExeProcInMainThread ,命名更精准,消除使用时的疑惑。详情如下: 1.TSimpleThr
阅读全文
摘要:第七节:在多个线程时空中,把各自的代码塞到一个指定的线程时空运行 以 Ado 为例,常见的方法是拖一个 AdoConnection 在窗口上(或 DataModule 中), 再配合 AdoQuery ,DataSoure, DbGrid 等,就可以实现数据库的访问操作。 这种方式,可以理解为在主线
阅读全文
摘要:第六节: TList 与泛型 TList 是一个重要的容器,用途广泛,配合泛型,更是如虎添翼。 我们先来改进一下带泛型的 TList 基类,以便以后使用。 本例源码下载(delphi XE8版本): FooList.Zip unit uFooList; interface uses Generics
阅读全文
摘要:第五节:多个线程同时执行相同的任务 1.锁 设,有一个房间 X ,X为全局变量,它有两个函数 X.Lock 与 X.UnLock; 有如下代码: X.Lock; 访问资源 P; X.Unlock; X.Lock; 访问资源 P; X.Unlock; X.Lock; 访问资源 P; X.Unlock;
阅读全文
摘要:第四节:多线程类的改进 1.需要改进的地方 a) 让线程类结束时不自动释放,以便符合 delphi 的用法。即 FreeOnTerminate:=false; b) 改造 Create 的参数,让它适合访问 COM 组件。如:在线程时空中能够创建 TAdoConnection; c) 设计一个接口能
阅读全文
摘要:第三节:设计一个有生命力的工作线程 创建一个线程,用完即扔。相信很多初学者都曾这样使用过。 频繁创建释放线程,会浪费大量资源的,不科学。 1.如何让多线程能多次被复用? 关键是不让代码退出 Execute 这个函数,一旦退出此函数,此线程的生命周期即结束。 要做到这一点,就需要在 Execute 中
阅读全文
摘要:第二节:在线程时空中操作界面(UI) 1.为什么要用 TThread ? TThread 基于操作系统的线程函数封装,隐藏了诸多繁琐的细节。 适合于大部分情况多线程任务的实现。这个理由足够了吧? 什么?你要用 windows 的线程 api 来实现多线程? 我可以负责任地告诉你,如果你用 api 来
阅读全文
摘要:第一节:初识多线程 1.为什么要学习多线程编程? 多线程(多个线程同时运行)编程,亦可称之为异步编程。 有了多线程,主界面才不会因为耗时代码而造成“假死“状态。 有了多线程,才能使多个任务同时执行,最大化利用CPU资源,提高效率。 在安卓编程中,要求必须是多线程,主界面中的代码只要耗时几秒钟,就会触
阅读全文
摘要:本例是把多个线程访问数据库的请求,全部阻塞到一个线程。 这是实际编程中常见的一种问题。 示例源码下载,所需支持单元均在源码中,且附详细说明。 TElegantThread 的父类是 TSimpleThread。 1 unit uElegantThread; 2 3 interface 4 5 use
阅读全文
摘要:delphi 自带的Timer控件,使用方便,但它的 OnTimer 事件是在主线程中引发的。 如果在事件中执行较耗时的代码,会引起主界面假死。故实现一个线程的Timer就有必要了。 TThreadTimer 基于 TSimpleThread 继承而来。 本例源码下载 1 unit uThreadT
阅读全文
摘要:1. TSimpleThread 2. TSimpleList 3. 以1,2构成 TSimplePool 用法 先定义: TDoSomeThingThread=class(TSimpleThread) ; 并给 TDoSomeThingThread reintroduce Create 不带参数的
阅读全文
摘要:读网页,通常是一个耗时操作。故把读网页放入线程是显得比较重要了。 本例用改进后的 TIdhttpEx 加上线程来实现读网页。 它的父类TSimpleThread 在此 本例程源码在此 源码中包含了所有的支持单元,其它单元后续会慢慢讲解 1 unit uReadHtmlThread; 2 3 inte
阅读全文
摘要:对线程的使用,是每个开发者都应该熟练掌握的,也是进阶的重要一环。 可以这样说,没有线程,连界面假死的问题都解决不了,就更别谈并行处理来提高效率了。 本例对线程进行改进,打造一个基础的线程,以后线程应用都从此类继承,大大节省了代码,提高了效率。 经长期实践,此代码能够应付许多情况,值得一学。 它的应用
阅读全文