Moin !
Ok ich habe nun den Thread umgebaut:
Delphi-Quellcode:
TBlobThread = class(TThread)
private
FOperation : TBlobOperation;
FSession : TABSSession;
FDatabase : TABSDatabase;
FTable : TABSTable;
protected
procedure Execute; override;
public
ThreadData : TMemoryStream;
constructor Create(Operation: TBlobOperation);
destructor Destroy; override;
end;
Beim Erzeugen des Threads ist das hinzugekommen:
ThreadData := TMemoryStream.Create;
Delphi-Quellcode:
procedure TfrmMain.Button2Click(Sender: TObject);
var
BlobThread: TBlobThread;
begin
BlobThread := TBlobThread.Create(boSavePICTUREToDB);
// Thread die Daten geben
BlobThread.ThreadData.Position := 0;
frmMain.Image1.Picture.Bitmap.SaveToStream(BlobThread.ThreadData);
BlobThread.Priority := tpLower;
BlobThread.Resume;
end;
Und hier das Speichern:
Delphi-Quellcode:
begin
FTable.Edit;
try
BlobStream := FTable.CreateBlobStream(FTable.FieldByName('Picture'),bmWrite);
ThreadData.SaveToStream(BlobStream);
ThreadData.Free;
BlobStream.Free;
FTable.Post;
except
FTable.Cancel;
end;
end;
Aber im Ergebnis ändert sich nix. Wenn ich ein bischen in der Oberfläche rumklicke (solange der Thread rennt), dann hängt irgendwann die Hauptanwendung komplett. Und zwar so lange bis das der Thread beendet wurde.