Das Break verlässt nur die innere Schleife.
Danach kommt ein Disconnect, welches vermutlich einen Fehler verursachen wird.
Prüfe vor dem Disconnect, ob IsConnected True ist.
Im Delphi Debugger (mit abgeschaltetem madExcept) habe ich überprüft welche Codezeilen ausgeführt werden wenn der Server nicht mehr erreicht werden kann:
als Breakpoint habe ich die Zeile mit
IsConnected := False gesetzt. Dort stoppt das Programm dann wie erwartet, aber von dort geht es mit F8 sofort aus der Prozedur heraus in das finally der aufrufenden Methode.
Delphi-Quellcode:
ProducerLoop := TProducerLoop.Create(BROKER_URL, QUEUE_NAME);
try
ProducerLoop.Run;
// die Run-Prozedur wird bei einer Exception verlassen ...
finally
ProducerLoop.Free;
// ... und daher das Programm hier fortgesetzt
end;