Para el tema de interrumpir:
Yo pongo una variable global booleana.
Un botón que al ser presionado poner la variable a True.
Todo el procedimiento de envío/recepcion deberá estar dentro de un while que chequee esta variable.
Código Delphi
[-]
var
interrumpir : boolean;
procedure TFMMain.BInterrumpirClick(Sender: TObject);
begin
interrumpir := True;
end;
procedure TFMMain.BLecturaEscrituraClick(Sender: TObject);
begin
interrumpir := False;
while (not interrumpir) and (not TermioLecturaEscritura) do
begin
end;
end;