为什么我的主线程还是不能高于子线程(50分)

  • 主题发起人 主题发起人 loshita
  • 开始时间 开始时间
L

loshita

Unregistered / Unconfirmed
GUEST, unregistred user!
我是刚学的
d7+xp
我new了一个线程
然后在主form中调用
比如:
mythread:=txxx.creat(false)
mythread.myaction;
线程是成功运行了
但是主线程根本不响应我
也就是说还是单线程
看来我还是没弄明白多线程
请给个简单的例子吧
d7带的那个sort line
看不懂
-____-
 
把你线程中的Synchronize去掉。
 
都试过了
用的话
主线程没响应
不用的话
子线程出问题
比如我的子线程是改变某控件的caption
如果不用Synchronize
那么改变caption的语句开始生效
但是 caption 就变成了nil
 
该不是在myactive中作线程的工作吧?
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

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

var
Form1: TForm1;
implementation
{$R *.dfm}
{ TMyThread }
procedure TMyThread.Execute;
begin
FreeOnTerminate := True;
Synchronize(UpdateCaption);
end;

procedure TMyThread.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
with TMyThread.Create(False)do
;
end;

end.
 
怎么把教程照抄一次就算了?
如果是改变主form的caption
那就是调用主线程吧?
好像道理上说不过去
 
后退
顶部