多线程应用 - Delphi

一些耗时长的操作,多线程是个不错的选择。

procedure TForm1.doHash;
var
hash:TwxzHash;
begin
  //hash:=TwxzHash.Create;
  progressbar1.Max:=5;
  progressbar1.Position:=0;
  memo1.Lines.Add(‘string md5‘);
  memo1.Lines.Add( hash.GetStringMD5( ‘wwwxxxx‘) );
  ProgressBar1.StepBy(1);
  memo1.Lines.Add(‘file md5‘);
  memo1.Lines.Add(hash.GetFileMD5(edit2.Text));
  ProgressBar1.StepBy(1);
  memo1.Lines.Add(‘file sha1‘);
  memo1.Lines.Add(hash.GetFileSHA1(edit2.Text));
  ProgressBar1.StepBy(1);
  memo1.Lines.Add(‘file sha256‘);
  memo1.Lines.Add(hash.GetFileSHA256(edit2.Text));
  ProgressBar1.StepBy(1);
  memo1.Lines.Add(‘file sha512‘);
  memo1.Lines.Add(hash.GetFileSHA512(edit2.Text));
  ProgressBar1.StepBy(1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
TThread.CreateAnonymousThread(dohash).Start;
end;
时间: 2024-11-06 16:37:56

多线程应用 - Delphi的相关文章

delphi WebBrowser的使用方法详解(五)-难点释疑

http://blog.csdn.net/xtfnpgy/article/details/15809635 网页代码:<SELECT id=fy onchange=TouchRefresh(1) name=fy> <OPTION selected value=15>每頁顯示15筆</OPTION> <OPTION value=30>每頁顯示30筆</OPTION> <OPTION value=60>每頁顯示60筆</OPTION

TStringList 常用操作

TStringList 常用操作 //TStringList 常用方法与属性: var   List: TStringList;   i: Integer; begin   List := TStringList.Create;   List.Add('Strings1');          {添加}   List.Add('Strings2');   List.Exchange(0,1);            {置换}   List.Insert(0,'Strings3');      {

delphi的多线程编程

多线程的基本概念 win 98/nt/2000/xp 是个多任务操作系统,也就是:一个进程可以划分为多个线程,每个线程轮流占用cpu 运行时间和资源,或者说,把cpu 时间划成片,每个片分给不同的线程,这样,每个线程轮流的“挂起”和“唤醒”,由于时间片很小,给人的感觉是同时运行的. 多线程带来如下好处:(自己阅读) 1)避免瓶颈: 2)并行操作: 3)提高效率: 在多线程中,通过优先级管理,可以使重要的程序优先操作,提高了任务管理的灵活性. 另一方面,在多cpu 系统中,可以把不同的线程在不同的

Delphi中多线程用消息实现VCL数据同步显示

Delphi中多线程用消息实现VCL数据同步显示 Lanno Ckeeke 2006-5-12 概述: delphi中严格区分主线程和子主线程,主线程负责GUI的更新,子线程负责数据运算,当数据运行完毕后,子线程可以向主线程式发送消息,以便通知其将VCL中的数据更新. 实现: 关键在于消息的发送及接收.在消息结构Tmessage中wParam和lParam类型为Longint,而指针类型也定义为Longint,可以通过此指针来传递自己所感兴趣的数据.如传递字符数组: 数组定义: const MA

delphi 多线程2

多线程常用的内核对象:CreateEvent事件,CreateMutex互斥,CreateSemaphore信号,CreateWaitableTimer计时器 {建立事件} function CreateEvent( lpEventAttributes: PSecurityAttributes; {!} bManualReset: BOOL; bInitialState: BOOL; lpName: PWideChar ): THandle; stdcall; {建立互斥} function C

delphi 多线程

CoInitialize(nil); //调用COM,需要初始化 HThread: THandle; ID: DWord; HThread:= CreateThread(nil, 0, @start, nil, 0, ID); ResumeThread(HThread_1); //返回值为1,继续线程 SuspendThread(HThread_1); //挂起线程 //写入INI配置,决定是否暂停线程while True do begin cap:= IniFile.ReadString('U

关于Delphi中多线程传递参数的简单问题

http://bbs.csdn.net/topics/390513469/ unit uThread; interface uses Classes; type Th = class(TThread) private { Private declarations } protected procedure Execute; override; end; 以上是创建的一个多线程 我在另外一个单元里Unit1有一个函数 function Myfun(username,password:string)

DELPHI中的多线程【深入VCL源码】

线程的基础知识 线程的组成.线程有两部分组成. 1.一个是线程的内核对象,操作系统用它来对线程实施管理.内核对象也是系统用来存放线程统计信息的地方. 2.另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量. 进程从来不执行任何东西,它只是线程的容器.线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中.这意味着线程在它的进程地址空间中执行代码,并且在进程的地址空间中对数据进行操作.因此,如果在单进程环境中,你有两个或多个线程正在运行,那么这两个线程将共享单个地址空

DELPHI下多线程编程的几个思维误区(QDAC)

有几个网友私下问我一些有关线程的事情.过节写个东西上来大家交流. 思维误区1,自己新建的THREAD是线程,自己的主程序不是线程. 很多人在多线程编程没有把主线程也当作线程.其实主线程也是线程.看起来是废话,这个话确实很重要,这个就意味着,在DELPHI中,不光你开的线程,还有你的主线程所有的内存分配也是串的,进锁排队的.主线程和线程的区别 A.一般来说主线程的优先级高了点.(当然你也可以自己设置) B.主线程在WIN下是处理APPLICATION的消息. 其他基本与你自建线程无区别. 所以这一