以前都是用全局变量加锁,然后线程去取来传递消息
后面想用windows消息实现,发现还是挺有意思的
线程间发消息
1,全局变量
2,windows信号
3,windows消息
我主要实现2,3种方法
第二种 主窗口给线程发信号
procedure TForm1.Button12Click(Sender: TObject);
begin
if m_hMutex = 0 then //全局信号
m_hMutex := CreateEvent(nil, FALSE, FALSE, nil);
if mythread = nil then
begin
mythread := TMYThread.Create(True); //创建自定义线程
mythread.Resume;
Sleep(1000);
end;
SetEvent(m_hMutex);//发送信号
线程中的处理
constructor TMYThread.Create(CreateSuspended: Boolean);
begin
inherited;
FreeOnTerminate := True;
FbPrint := False;
FbTerminated := False;
end;
destructor TMYThread.Destroy;
begin
inherited;
end;
procedure TMYThread.Execute;
var
i: Integer;
msg: TMsg;
R: Cardinal;
begin
i := 0;
while not FbTerminated do
begin
R
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)