Einzelnen Beitrag anzeigen

Adamo

Registriert seit: 5. Jul 2006
7 Beiträge
 
#57

Re: Workerthread: Der Diener im Hintergrund

  Alt 29. Mai 2008, 12:39
an diser Stelle war ich auch gerade. Ich habe den Setter für fOnException in der Unit eingebaut und DebugUnit definiert.
Folgendes kommt also raus (bei 5 Threads):

meInfo
500 jobs generiert
Job received
Job received
Job received
Job received
Job received
Abstrakter Fehler
Abstrakter Fehler
Abstrakter Fehler
Abstrakter Fehler
Abstrakter Fehler


Die Exception kommt bei dieser Funktion. Beim Execute.

Delphi-Quellcode:
Procedure TWorkerThread.Run;
// Kleine Hilfsprozedur, die den aktuellen Job ausführt.
// Im Falle einer Exception wird (falls angegeben) ein Event aufgerufen.
Begin
  Try
    If fCurrentJob.UsesCOMObjects And Not fCOMInitialized Then Begin
      fCOMInitialized := True;
      CoInitialize(Nil);
    End;
    fCurrentJob.execute(Self);
  Except
    On E: Exception Do Begin
      fCurrentException := E;
      If Assigned(fOnJobException) Then
        Synchronize(DoOnException);
    End;
  End;
  fCurrentJob.Free;
End;

P.S. Ich habs
Weil die Methode als virtual; abstract deklariert war, konnte sie nicht von der selben Klasse aufgerufen werden, in der sie deklariert war. Daher der abstrakte Fehler. Ich habe jetzt die Funktion als virtual deklariert und einen leeren Funktionsrumpf angelegt. Jetzt gehts.


Procedure Execute(aThread: TWorkerThread); virtual;
Delphi-Quellcode:
Procedure TWorkerThreadJob.Execute;
Begin
 
End;
  Mit Zitat antworten Zitat