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;