求助:多线程问题。(100分)

  • 主题发起人 DelphiWorm
  • 开始时间
D

DelphiWorm

Unregistered / Unconfirmed
GUEST, unregistred user!
求助:多线程问题。
我做了一个三层结构的程序。其中客户端的SocketConnection1连接应用服务器的代码我把它做成了一个线程。
代码如下:
type
TConnectThread=class(TThread)
private
FSocketConnection:TSocketConnection;
protected
procedure Execute;override;
public
constructor Create(SC:TSocketConnection);virtual;
end;

constructor TConnectThread.Create(SC:TSocketConnection);
begin
inherited Create(True);
FSocketConnection:=SC;
FreeOnTerminate:=true;
Resume;
end;

procedure TConnectThread.Execute;
begin
FSocketConnection.Connected:=true;
end;

在MainForm的OnCreate事情中TConnectThread.Create(SocketConnection1);
程序运行正常,并可以连接到应用服务器。
在MainForm上有一个按纽Button1,它的OnClick事件中,SocketConnection1.AppServer.GetInfo(R);
当按Button1时程序出错:Excepted return value not received.

以前不用线程连接服务器时,程序都很正常。
请各位高手帮我看看。
 
好像,SocketConnection本身就是用线程连接的,
只能在主线程中调用,
 
应该通知你的主线程你的SocketConnection已经连接好了,再调用
服务器上的方法.
 
请问如何通知主线程???
能否给出几行代码???谢谢
 
用PostMessage函数,发送一个自定义信息到主窗口.
比如:
PostMessage(Application.MainForm.handle,WM_USERMESSAGE,0,0);
在主窗口中对此消息处理。
 

Similar threads

顶部