还是多线程的老问题!(在线等待,在线给分) (50分)

  • 主题发起人 主题发起人 zzutrain
  • 开始时间 开始时间
Z

zzutrain

Unregistered / Unconfirmed
GUEST, unregistred user!
我发现当sendfilethread.execute 后,线程停留,
当且仅当在sendform上移动鼠标(也就是sendform获得一个消息后)才会进入主进程。
不知道为什么?
type
TSendFileThread=class(TThread)
protected
procedure Execute;
override;
end;

var
SendForm: TSendForm;
SendFileThread:TSendFileThread;
implementation
uses FunUnit;
{$R *.dfm}

procedure TSendFileThread.Execute;
begin
SendForm.SendLedFileData;
end;

procedure TSendForm.CreateThread;
begin
SendFileThread:=TSendFileThread.Create(True);
SendFileThread.OnTerminate:= ThreadDone;
SendFileThread.FreeOnTerminate:=True;
SendFileThread.Resume;
end;

procedure TSendForm.ThreadDone(Sender: TObject);
begin
PB1.Position:=0;
PB2.Position:=0;
/////////////////////////////////////////////////////////////////////////
ListBox1.Tag:=ListBox1.Tag+1;
SendNextPc;

end;
 
是这样的,主线程大多数情况下都是休眠的,它在等待各种消息,鼠标,键盘,和事件
 
我希望附线程执行完后立刻回到主进程,该怎么做?
 
那就给主线程发送一个窗口消息,不就行了
实际上,线程启动后就返回主线程了
 
除了发消息,有没有其他有效办法呢?
 
除了发消息,还可以定义全局变量。
 
该问题已自行解决。谢谢大家的参与
 
多人接受答案了。
 
后退
顶部