程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi使用IdTcp控件時的死鎖問題

Delphi使用IdTcp控件時的死鎖問題

編輯:Delphi

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;

這樣就解決了··

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved