相关资料:
http://www.delphitop.com/html/xiancheng/376.html

 1 unit Unit1;
 2
 3 interface
 4
 5 uses
 6   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 7   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 8
 9 type
10   TMyThread = class(TThread)//自定义的线程
11   protected
12     procedure Execute; override;
13   end;
14
15   TForm1 = class(TForm)
16     Button1: TButton;
17     procedure Button1Click(Sender: TObject);
18   private
19     { Private declarations }
20   public
21     { Public declarations }
22   end;
23
24 var
25   Form1: TForm1;
26   mytd: TMyThread;//线程对像
27 implementation
28
29 {$R *.dfm}
30
31 //返回值:0-已释放;1-正在运行;2-已终止但未释放;3-未建立或不存在
32 function CheckThreadFreed(aThread: TThread): Byte;
33 var
34   I: DWord;
35   IsQuit: Boolean;
36 begin
37   if Assigned(aThread) then
38   begin
39     IsQuit := GetExitCodeThread(aThread.Handle, I);
40     if IsQuit then //If the function succeeds, the return value is nonzero.
41     //If the function fails, the return value is zero.
42     begin
43       if I = STILL_ACTIVE then //If the specified thread has not terminated,
44       //the termination status returned is STILL_ACTIVE.
45       Result := 1
46     else
47       Result := 2; //aThread未Free,因为Tthread.Destroy中有执行语句
48     end
49     else
50     Result := 0; //可以用GetLastError取得错误代码
51   end
52   else
53   Result := 3;
54 end;
55
56 procedure TMyThread.Execute;
57 var
58  I: Integer;
59 begin
60   for I := 0 to 500000 do
61   begin
62     Form1.Canvas.Lock;
63     Form1.Canvas.TextOut(10, 10, IntToStr(I));
64     Form1.Canvas.Unlock;
65   end;
66 end;
67
68 procedure TForm1.Button1Click(Sender: TObject);
69 begin
70   if CheckThreadFreed(mytd)<>1 then //判断线程是否存在
71   begin
72     mytd := TMyThread.Create(True);
73     mytd.FreeOnTerminate := True;
74     mytd.Resume;
75   end;
76 end;
77
78 end.

View Code

转载于:https://www.cnblogs.com/FKdelphi/p/7506041.html

delphi判断线程是否正在运行相关推荐

  1. Delphi的线程类

    本文是没有写过delphi的多线程,对delphi的线程类TThread不熟悉的人而写的,主要从 TThread的源代码入手. Delphi为多线程的实现专门封装了一个TThread类来实现,我们从C ...

  2. Delphi Thread 线程(1)

    Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到, 但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synch ...

  3. 判断线程是否执行完毕_关于线程池你不能不知道的东西

    前言 平时接触过多线程开发的童鞋应该都或多或少了解过线程池,之前发布的<阿里巴巴 Java 手册>里也有一条: 可见线程池的重要性. 简单来说使用线程池有以下几个目的: 线程是稀缺资源,不 ...

  4. Delphi判断文件是否正在被使用

    Delphi判断文件是否正在被使用 2010-07-06 19:48 首先,我们先来认识下CreateFile函数,它的原型如下 HANDLE CreateFile( LPCTSTR lpFileNa ...

  5. python 判断线程状态_Python线程指南

    Python线程指南 本文介绍了Python对于线程的支持,包括"学会"多线程编程需要掌握的基础以及Python两个线程标准库的完整介绍及使用示例. 注意:本文基于Python2. ...

  6. 一个线程加一运算,一个线程做减一运算,多个线程同时交替运行--synchronized...

    使用synchronized package com.pb.thread.demo5;/**使用synchronized* 一个线程加一运算,一个线程做减法运算,多个线程同时交替运行* * @auth ...

  7. winform判断线程有没有完成_并发编程系列1:线程池的架构实现、大小配置、及四种线程池使用...

    △ 公众号回复关键词"架构" 即可领取<1500+BAT架构及面试专题合集> 本篇为线程池系列文章之一,不经常使用线程池的童鞋,还有对几种线程的使用不甚了解的童鞋,可以 ...

  8. python 判断线程状态_Python 线程和进程

    前言 学编程,谁没有为线程折腾过啊. 目录 线程与进程 线程与进程是操作系统里面的术语,简单来讲,每一个应用程序都有一个自己的进程. 操作系统会为这些进程分配一些执行资源,例如内存空间等. 在进程中, ...

  9. python 中主线程结束 子线程还在运行么_「干货」python线程笔记

    引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0.1秒,每条数据互不干扰.该如何执行才能花费时间最短呢? 在多线程(MT)编程出现之前 ...

最新文章

  1. 使用Gson 解析json
  2. 大数据的乘法实现——C语言
  3. sparql查询mysql_SPARQL常用查询
  4. 我们做了一款无网远程运维的智能硬件,坐等运维工程师“翻牌”
  5. 8个JavaScript题目
  6. python基础教程免费视频-零基础小白python从入门到精通视频(全60集)
  7. logback日志框架的简单使用
  8. 操作系统概念第四章部分作业题答案
  9. UML2.0详细教程(附示例)
  10. C# Windows API介绍与调用
  11. python pdf编辑器开发_使用pymupdf开发pdf查看编辑器
  12. 基于KNN的垃圾邮件分类实验
  13. 阿里云CTO王坚当选院士,高手的人生都是如此雷同:生命的信仰
  14. putty、xshell小键盘无法输入
  15. android 字体特效,Android自定义View实现闪耀字体效果
  16. 首届全国智能制造(中国制造2025)创新创业大赛在京启动
  17. Android实现网页动态背景“五彩蛛网”
  18. android有什么作用,Android 7.0有什么功能 Android N完整功能参数介绍
  19. 【Python爬虫系列教程 41-100】猫眼电影字体加密破解
  20. 宝塔环境PHP网站要配置HTTPS,SSL证书如何申请

热门文章

  1. Delphi 与 DirectX 之 DelphiX(60): TDIB.DoTrace();
  2. iOS开发之注册推送通知权限
  3. 三分钟轻松了解Spring框架基础知识
  4. CentOS7的初始配置
  5. 栗子——自定义EditText实现右下角计数控件
  6. paper 108:系统学习数字图像处理之图像复原与重建
  7. Navsoso引领HUD抬头导航潮流
  8. ASM磁盘超过disk_repair_time导致磁盘状态为forcing
  9. [转]网络编程学习指南
  10. 用开源组件jcaptcha做jsp彩色验证码