文档下载 文档下载导航
设为首页 | 加入收藏
搜索 请输入内容:  
 导航当前位置: 文档下载 > 所有分类 > IT/计算机 > Delphi多线程编程中的技巧
侵权投诉

Delphi多线程编程中的技巧

Delphi多线程编程中的技巧

Delphi多线程编程中的技巧

(1)创建线程
MsgThread := TMsgThread.Create(False) ; //创建并执行线程
MsgThread := TMsgThread.Create(True) ; //创建线程后挂起

constructor Create(CreateSuspended: Boolean); 中的参数CreateSuspended表示创建后是否挂起线程。
(2)设置线程里没有设置循环执行的话,且设置FreeOnTerminate为True,则线程执行完后就会自己释放。
(3)在一个线程结束后,调用另一个事件的方法:
只要设置Onterminate:=某方法,这样在线程结束前自然会被调用,比如 :
procedure TSendShortMessageThread.Execute;
var
Bitmap: Tbitamp;
begin
Bimap:=Tbitmap.create(nil) ;
OnTerminate:=Threaddone;
end;

procedure Threaddone(sender: tobject);
begin
Bimap.Free; //在Destory之前会被调用
end;
(4)程序结束前安全的退出线程的方法:
if MsgThread <> nil then
begin
MsgThread.Terminate ;
MsgThread.WaitFor ;
end;
(5)判断当前线程的状态:
//以下资料来自大富翁论坛。
/判断线程是否释放
//返回值:0-已释放;1-正在运行;2-已终止但未释放;
//3-未建立或不存在
function TFrmMain.CheckThreadFreed(aThread: TThread): Byte;
var
i: DWord;
IsQuit: Boolean;
begin
if Assigned(aThread) then
begin
IsQuit := GetExitCodeThread(aThread.Handle, i);
if IsQuit then //If the function succeeds, the return value is nonzero.
//If the function fails, the return value is zero.
begin
if i = STILL_ACTIVE then //If the specified thread has not terminated,
//the termination status returned is STILL_ACTIVE.
Result := 1
else
Result := 2; //aThread未Free,因为Tthread.Destroy中有执行语句
end
else
Result := 0; //可以用GetLastError取得错误代码
end
else
Result := 3;
end;
(6)线程同步。
如果线程要调用VCL里面的内容(如:别的窗体中的控件),就需要将这个线程同步。线程同步表示交由主线程运行这段代码,各个线程都在主线程中分时间段运行。另外,要想避免多个线程同时执行同一段代码也需要将多线程同步。
临界区和互斥的作用类似,都是用来进行同步的,但它们间有以下一点差别:
临界区只能在进程内使用,也就是说只能是进程内的线程间的同步;而互斥则还可用在进程之间的;临界区所花消的时间很少,才10~15个时间片,而互斥需要400多个;临界区随着进程的终止而终止,而互斥,如果你不用closehandle()的话,在进程终止后仍然在系统内存在,也就是说它是系统全局对象;
同步的方法有:

(1)使用临界区对象。

临界区对象有两种:TRTLCriticalSection 和 CriticalSection。
&#615

第1页

你可能喜欢

热门文档

相关文档

  • 不错的delphi多线程编程教程

    不错的 delphi 多线程编程教程 http://hi.baidu.com/luhui32599/blog/item/...在 Delphi 中使用多线程有两种方法: 调用 API、使用 TThread 类; 使用 API ...

  • delphi之多线程编程(一)

    delphi之多线程编程(一)_计算机软件及应用_IT/计算机_专业资料。讲解delphi之多...在 Delphi 中使用多线程有两种方法: 调用 API、使用 TThread 类; 使用 API ...

  • Delphi多线程详解

    Delphi多线程详解_IT/计算机_专业资料。一份讲解Delphi多线程使用方法的资料,有很好...第11章 编写多线程应用程序 307 现在,可以通过调用线程对象的Create()使上述...

  • 多线程技术在Delphi数据库编程中的应用

    1、线程的创建 笔者利用 Delphi 语言进行了程序的开发和编写, 该语言的优点之一是它有一整套 线程同步方法,可以很方便地使用。 一个进程的主线程是由操作系统...

  • DELPHI多线程编程

    DELPHI多线程编程_计算机软件及应用_IT/计算机_专业资料。DELPHI多线程编程我们...一、TThread 对象的主要方法 构造线程: constructor Create(CreateSuspended:boolean...

  • delphi多线程编程

    Free◆ ◆delphi 多线程编程之一 create 和 Free◆ (调试环境:Delphi2007+WinX...利用将 FreeOnTerminate 的属性设为 True 的方法来及时清除线程对象是最方便的...

  • delphi 多线程 编程

    技能培训-Windows下Delphi的多线程编程 下 的多线程编程 今天的内容什么是线程 ...OnTerminate事件 OnTerminate事件里的代码是线程执行完 Execute方法,结束线程前自动...

  • delphi与多线程编程(1)

    Delphi多线程编程中的技巧 2页 2财富值喜欢此文档的还喜欢 不错的delphi多线程编程教... 20页 免费 Delphi 多线程实例 3页 免费 Delphi多线程实例解析 5页 免...

  • Delphi的多线程技术在Socket编程中的应用

    Delphi的多线程技术在Socket编程中的应用_信息与通信_工程科技_专业资料。Delphi的...只能逐个地实现对 D>E 的访 问" 可以采用的方法较多 F 但较为通用的方法 ...

  • 【论文】基于Delphi7多线程技术在网络中的应用研究

    基于Delphi7多线程技术在网络中的应用研究_专业资料。随着计算机网络技术以及分布式实时监控系统的不断发展,并发多任务程序设计技术在程序设计中占有的地位越来越重要,现...

站点地图 | 文档上传 | 侵权投诉 | 手机版
本站所有资源均来自互联网,本站只负责收集和整理,均不承担任何法律责任,如有侵权等其它行为请联系我们.
文档下载 Copyright 2013 doc.guandang.net All Rights Reserved.  -  email