Forum: Algorithmen, Datenstrukturen und Klassendesign
by DeddyH,
3. Feb 2012
Das sagt mein Kaktus auch immer, aber der hat keine Ahnung, der ist nämlich gelernter Bäcker :roteyes: :freak:
Forum: Algorithmen, Datenstrukturen und Klassendesign
by DeddyH,
3. Feb 2012
Das wirklich Lustige daran ist ja, dass ich das bei einem Event bereits genau so gemacht hatte. Wieso bei den anderen nicht, das wird wohl für immer ein Geheimnis meines wirren Hirns bleiben :mrgreen: (immer diese Stimmen *huuuu*).
Forum: Algorithmen, Datenstrukturen und Klassendesign
by DeddyH,
3. Feb 2012
Du hast mich gerade auf eine Idee gebracht, ich probiere mal etwas aus (mit ComponentState hatte ich auch schon probiert, kann mir aber denken, wo evtl. mein Denkfehler lag).
Danke für den Schubs in die richtige Richtung. Statt den Thread direkt das Event ausführen zu lassen, benachrichtigt er nun die Komponente, welche zuerst ihren ComponentState prüfen kann und dann das Event auslöst oder...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by DeddyH,
3. Feb 2012
Nützt mir leider nichts, da ich innerhalb der Komponente weder wissen kann noch will, was am Frontend geschieht, sobald ich ein Event auslöse. Ansonsten hätte ich auch FreeNotification oder sowas in Betracht gezogen.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by DeddyH,
3. Feb 2012
Es ist Fall a). Die Komponente stellt Methoden bereit, um indirekt auf den Thread Einfluss zu nehmen (diese heißen z.B. StopSearch, ContinueSearch, Abort usw.). Die direkte Kommunikation mit dem Thread übernimmt aber die Komponente, da der Thread nach außen gar nicht bekannt ist.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by DeddyH,
3. Feb 2012
An Application.Terminated oder Ähnliches hatte ich auch schon gedacht. Aber es kann ja auch sein, dass die Komponente auf einem dynamisch erzeugten Formular liegt, damit bekäme ich dasselbe Problem, sobald das freigegeben wird, da ja dann die Anwendung trotzdem weiterläuft.
@Wladi: das ist aber wieder Code, der dann im Formular stehen muss.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by DeddyH,
3. Feb 2012
Vielleicht habe ich mich missverständlich ausgedrückt: Komponente auf Formular, Thread in Komponente. Komponente bekommt Event zugewiesen und schleust das einfach zum Thread durch. Somit führt der Thread eine Methode des Forms aus, auch wenn dieses bereits mit seiner Freigabe begonnen hat. Das im Formular abzufangen ist ja nicht das Thema, nur habe ich darauf keinen Einfluss.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by DeddyH,
3. Feb 2012
Ich bastle momentan für einen Bekannten an einer Dateisuch-Komponente. Diese benutzt intern einen Thread, der bei Funden synchronisiert Events abarbeiten lässt. Soweit alles feini, feini. Das Problem, das ich noch habe (ich zeige mal beispielhaften Vergleichscode):
Komponente
type
TMyThread = class(TThread)
private
FOnDings: TDingsEvent;
...
procedure TMyThread.DoOnDings;