2 wishweijingjing wishweijingjing 于 2014.05.23 17:03 提问

delphi线程问题 delphi 程序里我写了一个方法

delphi 程序里我写了一个方法,方法里面的算法比较复杂,计算起来时间比较长,我想把这个方法单独放到一个线程里去执行,请问是怎么写?一点头绪没有啊,谢谢

1个回答

Olenichenko_vov
Olenichenko_vov   2014.09.19 23:47

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

TMyThread = class(TThread)
protected
procedure DoWork;
procedure Execute; override;
end;

var
Form1: TForm1;
MyThread: TMyThread;

implementation

{$R *.dfm}
procedure TMyThread.Execute;
begin
//算法比较复杂
while not Terminated do
Synchronize(DoWork);
end;

procedure TMyThread.DoWork;
begin
Form1.CheckBox1.Checked := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Caption = 'Stop' then begin
MyThread.Terminate;
Button1.Caption := 'Start';
Exit;
end;
MyThread:=TMyThread.Create(False);
MyThread.Priority:=tpNormal;
Button1.Caption := 'Stop';
Form1.CheckBox1.Checked := False; // start Thread
end;

end.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Delphi中使用TThread类实现多线程
之前写的多线程程序都是用api直接做的,没有用过delphi自带Tthread类,刚才看了下,写了个demo,希望对新手有帮助。。。 窗体单元: unit main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,myTh
delphi 多线程定时执行程序如何写
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TSysChatMainForm = class(TForm) procedure FormCreate(Sender: TObject);
Delphi7创建及释放线程实例
Delphi7创建及释放线程实例,里有我加的中文
delphi假死线程堵塞解决办法
Delphi的高效不多说... 俗话说;真正的程序员用C语言,聪明的程序员用Delphi,一点都不假,和C++比它比C++更简单,更容易上手,功能丝毫不逊色C++, 比起VB,毫无疑问比VB好多了,重要的是快,高效! 高效的Pascal编译器,强大的数据库支持==.... Delphi在进行计算量相当大的时候会出现程序假死,在线程编程的时候会出现线程堵塞,更重要的是在线程编程时可以大大加快
Delphi7 从子线程中发送消息到主线程触发事件执行
在对数据库的操作时,有时要用一个子线程来进行后台的数据操作。比如说数据备份,转档什么的。在主窗口还能同是进行其它操作。而有时后台每处理一个数据文件,要向主窗口发送消息,让主窗口实时显示处理进度在窗口上(可视),同时进行日志处理等。我用的是下面的方法:[1]用到的API函数:RegisterWindowsMessage----------------------函数功能:该函数定义一个新的窗口消息,
delphi中Thread线程的使用方法
  TClientDataThread = class(TThread) private public    ListBuffer :TStringList;    TargetList :TStrings;    procedure synchAddDataToControl;    procedure showme;    constructor Create(Cr
在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程!
在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程!   如果直接使用Win32的API函数CreateThread()创建多个线程,也是可以创建的。但是,你应该明白,在每个线程中动态分配和销毁内存块,是需要同步保护的。Delphi语言中有一个在使用多线程环境下至关重要的全局变量IsMultiThread,系统在进行内存分配的时候,根据IsMu
delphi 线程同步的基本方法
上次跟大家分享了线程的标准代码,其实在线程的使用中最重要的是线程的同步问题,如果你在使用线程后,发现你的界面经常被卡死,或者无法显示出来,显示混乱,你的使用的变量值老是不按预想的变化,结果往往出乎意料,那么你很有可能是忽略了线程同步的问题。 当有多个线程的时候,经常需要去同步这些线程以访问同一个数据或资源。例如,假设有一个程序,其中一个线程用于把文件读到内存,而另一个线程用于统计文件中的字符
webbrowser在线程中使用的问题
问:为什么在线程中很多功能一使用就报错?比如我在线程中可以获取到IHTMLDocument2,但通过IHTMLDocument2获取get_frame就报错在timer或主进程中都没有这个问题,如何解决呀各位?答:原文:http://topic.csdn.net/u/200809
delphi多线程读写锁相关类
原文:http://www.cnblogs.com/94YY/archive/2011/10/05/2199346.html System.Utils单元:    TSimpleRWSync    TMultiReadExclusiveWriteSynchronizer(别名:TMREWSync) 相关:http://blog.csdn.net/genc