关于SocketConnection在线程中的问题,高手帮忙...(100分)

  • 主题发起人 主题发起人 baohongyu
  • 开始时间 开始时间
B

baohongyu

Unregistered / Unconfirmed
GUEST, unregistred user!
出错提示:Error reading from socket.
程序如下:
主表单如下定义,MainForm:
SocketConnection:TSocketConnection;
procedure connection;
begin
SocketConnection.Connectioned:=true;
end;
线程如下定义,RunThread:
unit RunTestUnit;
interface
uses
Classes,Windows,SysUtils,WinSock;
type
RunTest = class(TThread)
private
{ Private declarations }
public
procedure Go(Commandstr:string);
protected
procedure Execute;
override;
end;
implementation
uses
MainUnit;//主表单
{ RunTest }
procedure RunTest.Execute;
begin
while truedo
begin
if Terminated then
exit;
if not suspended then
begin
if not MainFrom.Socketconnection.connectioned then
MainFrom.Socketconnection.connectioned:=true;
end;
end;
end;
然后在主表单的一个按钮事件里,将挂起标志置False.
提示错误:Error reading from socket.
请问大虾,以上问题,如何解决~~
 
试试:
unit RunTestUnit;
interface
uses
Classes,Windows,SysUtils,WinSock;
type
RunTest = class(TThread)
private
{ Private declarations }
procedure connecting;
public
procedure Go(Commandstr:string);
protected
procedure Execute;
override;
end;
implementation
uses
MainUnit;//主表单
{ RunTest }
procedure RunTest.connecting;
begin
MainFrom.Socketconnection.connectioned:=true;
end;
procedure RunTest.Execute;
begin
while truedo
begin
if Terminated then
exit;
if not suspended then
begin
if not MainFrom.Socketconnection.connectioned then
synchronize(connecting);
end;
end;
end;
 
楼上的,解决了我一半的问题.
用你的方法:
procedure RunTest.connecting;
begin
MainFrom.Socketconnection.connectioned:=true;
...
MainFrom.Socketconnection.connectioned:=False;
end;
死机.就是连接/断开不能在一起.只能别发消息.为什么,不懂.
 
你先不用线程,直接用mainform的方法来连接RDM看会不会有事,没事再用线程.说不定是线程坏的事
"Error reading from socket"是连接成功后Socket.ReciveBuf出错抛出的,
只要出现这错误,那SocketConnection会断开对服务器的连接
你这样我是看不出问题.
 
To楼上的。MainForm没有问题。
我只想知道,你们捉线程时,有没有这样情况
 
很少出现,我只这段写过它的扩展,比较清楚,不过正常情况下很少出现这个问题。
 
请看:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=841877
问题:如何在三层内实现在客户端的后台查询
 
您没运行Socket Server
 
不好意思,写错方向了。
在线程中建立一个SocketConnection试试。
 
后退
顶部