Tôi nên khôi phục trong tình huống này như thế nào?khôi phục từ "Thiết lập kết nối theo ngang hàng" Indy TCP Client
Máy chủ bị treo, do đó kết nối đã bị đóng bất thường. Các cuộc gọi đến hầu hết mọi thứ dẫn đến các ngoại lệ "Kết nối đặt lại theo ngang hàng". Tôi dường như đã cố định nó bằng cách gọi Disconnect trên đối tượng TIdTCPClient bên trong khối ngoại trừ, nhưng nó kết quả trong một ngoại lệ cuối cùng với cùng một thông báo (mà tôi đã bắt gặp trong khối try-except thứ hai).
Đây là với Indy10 và Delphi XE2.
try
if not EcomSocket.Connected then EcomSocket.Connect();
except
on e: Exception do begin
try
EcomSocket.Disconnect();
except
MessageDlg('Connectivity to the server has been lost.', mtError, [mbOK], 0);
end;
end;
end;
Bạn đã thử để gỡ lỗi vào TIdTCPConnection.Disconnect trong IdTCPConnection.pas? Có thể một trình xử lý OnDisconnect được thực hiện và sử dụng kết nối. Hoặc NotifyPeer đóng một vai trò, cũng xem các ý kiến trong nguồn về các kịch bản khác nhau – mjn
Giải phóng đối tượng và tạo một đối tượng mới sẽ giúp (nhưng không giúp tìm lý do ngoại lệ) – mjn
Tôi không quan tâm nhiều đến lý do Tôi nhận được một ngoại lệ khi gọi ngắt kết nối. Tôi chỉ muốn biết làm thế nào để phục hồi đúng cách từ một tình huống như thế này. –