我的程序是一个ClientSocket程序,使用clBlocking和线程方式。线程用TWinSocketStream
收发数据。大体框架是:
MySocket:TCustomWinSocket;
TheStream:TWinSocketStream;
constructor TMyThread.create(skt: TCustomWinSocket);
begin
MySocket := skt;
TheStream:=TWinSocketStream.Create(skt, 1000);
inherited create(false);
end;
procedure TMyThread.Execute;
begin
while not terminateddo
begin
if not MySocket.Connected then
begin
terminate;
exit;
end;
if theStream.WaitForData(1000) then
begin
if not MySocket.Connected then
begin
terminate;
exit;
end;
。。。。。。。。。。。。
TheStream.Read(aBuf,1024);
end;
//下面是处理Socket收发数据
。。。。。。。。。。。。。。。
if (.....) then
TheStream.Write(aBuf,aBufSize);
end;
ClientSocket的Connect事件
procedure TForm1.SMUpSktConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
TheMyThread := TMyThread.create(Socket);
end;
应用程序关闭、
procedure TForm1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if TheMyThread<>nil then
begin
ClientSocket.Close
TheMyThread.Terminate;
end;
end;
我在Delphi环境下调试怎么也找不出问题。可是脱离Delphi环境运行应用程序,关闭程序时,有时就会出现
‘应用程序发生异常,未知的软件异常(0x0eedfade),位置为0x77e67e08'的错误。