winddriver/Delphi-Cross-Socket

Net.CrossSocket.Base.pas _Log 在debug模式下,報内存分配和非法訪問的錯誤。

Opened this issue · 1 comments

procedure _Log(const S: string); overload;
begin
  if Assigned(_CrossLogger) then
    _CrossLogger(S)
  else
  begin
    {if IsConsole then  
      Writeln(S);            // 報錯位置。
    AppendLog(S);}      // 報錯位置。
  end;
end;

今天用單元測試,測試一個socket通信,使用的是控制臺應用。_Log 這裏開始報錯。

另外請教一個問題,

FSocket關閉的時候, 要先停掉什麽?我看示例Demo程序裏面,是
Delphi-Cross-Socket\Net\Demos\Old\TestCrossSocket

  FSocket.StopLoop;
  FSocket := nil;

之前我一直是

  FSocket.CloseAll;
  FSocket.StopLoop;
  FSocket := nil;

但是今天測試的時候上面的代碼在 StopLoop 這裏報錯。
然後又改成了這樣,好像要好一些。

  FSocket.DisconnectAll;
  FSocket.CloseAll;
  Sleep(20);
  FSocket.StopLoop;
  FSocket := nil;

謝謝。

最好提供能复现问题的完整工程,才好确定到底是哪里的问题