Delphi使用IdTcp控件,在IdTCPServer1Connect事件中對未顯示出的Form操作發生死鎖
例如:Form2中包含幾個Button,1個listbox(如果什麼控件都沒有可能不會發生死鎖)
在IdTCPServer1Connect事件中加入
procedure TServerForm.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
Form2.show;
end;
然後就發生死鎖。具體原因還沒找出,不過找到了一個解決方法:
通過添加一個timer可以將timer1.interval設為1,Enable=false然後
procedure TServerForm.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
timer1.Enable:=true;
end;
procedure TServerForm.Timer1Timer(Sender: TObject);
begin
Form2.show;
timer1.Enabled:=false;
end;
===============================腦殘分割線====================================
後來冷靜了想了一下:
procedure TServerForm.IdTCPServer1Connect(AThread: TIdPeerThread);
begin
AThread.Synchronize(Form2.Show);
end;
這樣就解決了··