多线程消息处理
我刚刚入门多线程,遇到了一些疑问。
问题1:
我采用 调用API 的方法才创建一个新线程,该区域的代码截取如下:
procedure TForm1.btn1Click(Sender: TObject);var ID:THandle;begin edt1.Text:='线程开始。'; CreateThread(nil, 0, @MyFunction, nil, 0, ID); edt2.Text:='线程终止。'; //下面还有大量代码,因为与问题无关,此处省略……end;
edt2.Text:='线程终止。';
Form1.Hide;Form2.Show;
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } FMyThread: TThread; procedure DoMyTerminateEvent(Sender: TObject); public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}type TMyThread = class(TThread) procedure Execute; override; procedure DoIt; end;{ TMyThread }procedure TMyThread.DoIt;begin ShowMessage('线程执行中...');end;procedure TMyThread.Execute;begin inherited; //线程中执行的代码,如果访问界面,就需要同步到主线程: Synchronize(DoIt);end;{ TForm1 }procedure TForm1.DoMyTerminateEvent(Sender: TObject);begin ShowMessage('线程终止');end;procedure TForm1.FormCreate(Sender: TObject);begin FMyThread := TMyThread.Create(True); FMyThread.OnTerminate := DoMyTerminateEvent; FMyThread.Resume;end;procedure TForm1.FormDestroy(Sender: TObject);begin FMyThread.Free;end;end.
[解决办法]
新手就先學會用TThread吧
[解决办法]
研究API建立線程,這有完整的教程
http://www.cnblogs.com/del/category/174761.html
[解决办法]
对