Thema: Delphi Thread anhalten

Einzelnen Beitrag anzeigen

Florian_Meyer

Registriert seit: 15. Jul 2006
Ort: Rostock
37 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Thread anhalten

  Alt 6. Aug 2006, 09:04
Ok, also der Fehler tritt auf, wenn ich das Fenster mit ShowModal; aufrufe.

Delphi-Quellcode:
procedure TnewUpload.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Thread2.Resume;
end;

procedure TnewUpload.FormShow(Sender: TObject);
begin
  Thread2.Suspend;
end;

procedure TnewUpload.SaveUpload;
begin
  if eServer.Text = 'then
    MessageBox(0,'Bitte geben Sie einen Server ein!','Server eingeben',MB_OK + MB_ICONSTOP)
  else if ePort.Text = 'then
       MessageBox(0,'Bitte geben Sie einen Port ein!','Port eingeben',MB_OK + MB_ICONSTOP)
    else if eUser.Text = 'then
         MessageBox(0,'Bitte geben Sie einen Benutzernamen ein!','Benutzername eingeben',MB_OK + MB_ICONSTOP)
      else if ePassword.Text = 'then
           MessageBox(0,'Bitte geben Sie ein Passwort ein!','Passwort eingeben',MB_OK + MB_ICONSTOP)
        else if eQPath.Text = 'then
            MessageBox(0,'Bitte geben Sie einen Quellpfad ein!','Quellpfad eingeben',MB_OK + MB_ICONSTOP)
          else if eSPath.Text = 'then
               MessageBox(0,'Bitte geben Sie einen Serverpfad ein!','Serverpfad eingeben',MB_OK + MB_ICONSTOP)
            else if eIntervall.Text = 'then
                 MessageBox(0,'Bitte geben Sie ein Intervall ein!','Intervall eingeben',MB_OK + MB_ICONSTOP)
              else if eIntervall.Text < '60then
                   MessageBox(0,'Das Intervall muss mindestens 60 Sekunden betragen!','Intervall zu klein',MB_OK + MB_ICONSTOP)
                else
                begin
                  MainForm.ABSDatabase1.Connected := true;
                  MainForm.UploadTable.Active := true;
                  with MainForm.UploadTable do
                  begin
                    Insert;
                    FieldByName('sServer').AsString := eServer.Text;
                    FieldByName('iPort').AsString := ePort.Text;
                    FieldByName('sUser').AsString := eUser.Text;
                    FieldByName('sPassword').AsString := ePassword.Text;
                    FieldByName('sQPath').AsString := eQPath.Text;
                    FieldByName('sSPath').AsString := eSPath.Text;
                    FieldByName('iIntervall').AsString := eIntervall.Text;
                    FieldByName('lAuto').AsVariant := cbAuto.Checked;
                    Post;
                  end;
                  ClearForm;
                  MainForm.UpdateUploads;
                  MainForm.UploadTable.Active := false;
                  MainForm.ABSDatabase1.Connected := false;
                  Close;
              end;
end;

procedure TnewUpload.bSaveClick(Sender: TObject);
begin
  SaveUpload;
end;

Dort rufe ich ja dann
Delphi-Quellcode:
procedure TnewUpload.FormShow(Sender: TObject);
begin
  Thread2.Suspend;
end;
auf und dort bekomme ich die Zugriffsverletzung.

Wenn ich
Thread2.Suspend;
über einen Button im MainForm aufrufe, dann bekomme ich keinen Fehler.

MfG
  Mit Zitat antworten Zitat