Delphi7 自带的TCP通信例子,修改一下就出错,不知为何?
Delphi7 demo 下的Net chat 程序,我想在新线程中传递一个新的Form给它,
线程运行时用Show显示这个窗口,但是运行时就死机了。 也就是:
在TcpServer1的 OnAccept事件中,窗建一个Form,然后将其传递给子线程,
子线程在运行时就死了, 如果在线程中创建Form,调用Show显示,则没问题,这又是为什么呢?那位高手分析一下,很急!
Delphi7 demo 下的Net chat 程序,我想在新线程中传递一个新的Form给它,
线程运行时用Show显示这个窗口,但是运行时就死机了。 也就是:
在TcpServer1的 OnAccept事件中,窗建一个Form,然后将其传递给子线程,
子线程在运行时就死了, 如果在线程中创建Form,调用Show显示,则没问题,这又是为什么呢?那位高手分析一下,很急!
var
s: string; DataThread: TClientDataThread;
begin
// create thread
DataThread:= TClientDataThread.Create(true);
// set the TagetList to the gui list that you
// with to synch with.
DataThread.TargetList := memRecv.lines;
DataThread.form :=Tfmduihua.Create(nil);加了这个。
procedure TClientDataThread.synchAddDataToControl;
begin
TargetList.AddStrings(ListBuffer);
// form:=Tfmduihua.Create(nil);
form.Show ; //死机了
end;
中, 而TCpserver 的 Onaccept 也是在一个线程中运行的,所以也不要在此线程中创建form
,把创建form的过程放到子线程的Synchronize()中