delphi多线程程序示例

(*----下面这个程序介绍了我们在使用线程及未使用线程二种情况下,运行该程序的反

应。当点UsedThread按钮时,则建立一个线程,这时我们可以在程序进行计算的同

时,改变窗体的尺寸及移动它。当按下NoUsedThread按钮时,不建立线程,我们会发

现在程序没有计算完之前根本不能做其它任何事情!

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Buttons;

type
 TForm1 = class(TForm)
  UsedThread: TBitBtn;
  NoUsedThread: TBitBtn;
  procedure UsedThreadClick(Sender: TObject);
  procedure NoUsedThreadClick(Sender: TObject);
 private
  { Private declarations }
 public
  { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function MyThreadFunc(P:pointer):Longint;stdcall;
var
 i:longint;
 DC:HDC;
 S:string;
begin
 DC:=GetDC(Form1.Handle);
 for i:=0 to 500000 do begin
  S:=Inttostr(i);
  Textout(DC,10,10,Pchar(S),length(S));
 end;
 ReleaseDC(Form1.Handle,DC);
end;

procedure TForm1.UsedThreadClick(Sender: TObject);
var
 hThread:Thandle;//定义一个句柄
 ThreadID:DWord;
begin
//创建线程,同时线程函数被调用
 hthread:=CreateThread(nil,0,@MyThreadfunc,nil,0,ThreadID);
 if hThread=0 then
 messagebox(Handle,'Didn’tCreateaThread',nil,MB_OK);
end;

procedure TForm1.NoUsedThreadClick(Sender: TObject);
begin
 MyThreadfunc(nil);
 //没有创建线程时,直接调用线程函数
end;
end.

时间: 2024-10-29 05:19:02

delphi多线程程序示例的相关文章

Delphi多线程编程的三个常用方法

有一段多线程的程序需要完善, 捋了一遍 XE4 中关于多线程的源码, 发现有这三个类方法就足够我用了, 暂时结束学习. TThread.CreateAnonymousThread(); //普通 TThread.Queue(); //队列 TThread.Synchronize(); //VCL 同步 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索多线程 , 源码 , 队列 , 方法 同步 delphi多线程编程.del

Java编程那些事儿96——多线程使用示例1

12.3 多线程使用示例 多线程技术对于初学者来说,是编程思维的一种跳跃,在实际学习时,一定要熟悉线程的基础知识,掌握线程的实现方式,然后就是开始大量的进行实践,从实践中领悟线程编程的奥妙以及实现的原理. 下面通过几个常见的例子演示多线程的基本使用. 12.3.1 定时炸弹 定时炸弹是在电影中常见的一种装置,在该部分就使用多线程技术模拟该功能.实现的功能为:在程序启动以后进行倒计时,当60秒以后程序结束,在程序运行时可以在控制台输入quit控制线程(炸弹)的暂停. 在该示例程序中,开启了一个系统

利用HttpRequest登录到某个网站,然后获取网站信息的程序示例 [原创]

request|程序|示例|原创 问题:有的网站的相关内容必须要在登录后才可以查看,其登录信息保存在session变量之中.这样,使用asphttp等组件就难以正确得到所要的信息. 解决:使用asp.net中的httprequest和httpresponse来实现. 要点:1. 通过附加一个cookiecontainer到httprequest对象中,可以得到登录后返回的代表SESSION ID的COOKIE. 见Login方法2. 将此COOKIE包含在一个cookiecontainer中并附

利用C#线程窗口调试多线程程序

  从网上的资料判断,调试多线程程序似乎就一下3种方法. 1.在日志的某个地方写日志文件. 优点:不会干扰程序的执行,特别是对网络的多线程通信. 缺点:每次都需要打开日志文件以查看进程运行的信息. 2.利用断点进行调试. 优点:直观,可以直接看到运行过程的值 缺点:在多个线程设置断点,可能让程序跳来跳去,还需要额外地分出一部分精力用来理清程序的逻辑 3.利用弹出窗口来查看进程调试的信息. 优点;直观 缺点;在调试网路通信的时候,使得通信的过程产生延时,导致通信失败. 4.利用vs2010自带的线

初学Java写的第一个多线程程序

程序|初学|多线程 /** 文件名 : FirstTread.java 描述 :初学Java写的第一个多线程程序 作者: 慈勤强 cqq1978@yeah.net 参考:http://java.sun.com **/ import java.io.*;import java.net.*; public class FirstTread extends Thread{ public void run() { int i=0; try { String hostname = "www.flashem

第十一章-Delphi应用程序的应用(一)(3)

11.1.2.4 编译帮助工程文件 有两种编译器可以编译帮助工程文件:HCP.EXE ,H31.EXE.两种编译器编译的文件不能在Winddow3.0中使用,但能在Windows 3.1中使用.其中HCP.EXE是保护模式"编译器",它能更好的使用内存.必须在Windows的Dos窗口中使用HCP.EXE. 编译前要注意两个问题: 1. 所有源文件必须以RTF格式保存: 2. 下面的文件必须在同一个目录下 ● 所有的.RTF文件 ● 帮助编译器(HCP.EXE,HC31.EXE) ●

Java多线程程序设计基础

在Java语言产生前,传统的程序设计语言的程序同一时刻只能单任务操作,效率非常低,例如程序往往在接收数据输入时发生阻塞,只有等到程序获得数据后才能继续运行. 随着Internet的迅猛发展,这种状况越来越不能让人们忍受:如果网络接收数据阻塞,后台程序就处于等待状态而不继续任何操作,而这种阻塞是经常会碰到的,此时CPU资源被白白的闲置起来.如果在后台程序中能够同时处理多个任务,该多好啊!应Internet技术而生的Java语言解决了这个问题,多线程程序是Java语言的一个很重要的特点.在一个Jav

对应用程序结构进行组织的程序示例

上面我们介绍了对应用程序结构进行组织的方法,接下来我们举一个综合应用的例子.程序实现的功能非常简单,但其中用到了我们讲解的各方面的知识.在程序中,我们利用名字空间把应用程序功能进行分割,并且用到了在一个名字空间中包含多个类.在一个可执行文件中调用多个动态链接库的方法.程序中还用到了异常处理.类的继承.派生类对虚方法的重载.多态性的实现等概念,希望读者能够在阅读程序时认真注意这些用法,来加深对基本概念的理解. 该程序是一个小游戏,游戏中随机产生矩形.正方形.直角三角形.等腰直角三角形四种图形.游戏

使用.NET发送E-Mail小程序示例

本文主要是以.NET下怎么实现发送E-Mail作为示例分析讲解,故在示例程序里有许多涉及到.Net.Mail之外的内容都没做.最近比较忙没太多的时候去完善其功能,有兴趣的朋友可以下载源码去完善下.这不是一个什么大的软件,也不是什么很特别的东西,我写这个文章的目的是让大家一起来学习.NET下发送E-mail的实现,希望这篇文章可以帮助到还没搞清楚怎么实现发送邮件的朋友,对于已经会的或是这方面的牛人的前辈们看了本文请留下宝贵的建议. 本程序是采用.NET框架下的Mail类来完成邮件的发送操作的,里面