AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sich überholende Events

Ein Thema von UweR · begonnen am 30. Mai 2006 · letzter Beitrag vom 30. Mai 2006
Antwort Antwort
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#1

Sich überholende Events

  Alt 30. Mai 2006, 09:45
Hallo Leute,

ich habe das folgende Problem:

Ich muß sicherstellen das ein eine Reihe von selbst generierten Events genau in der Reihenfolge abgearbeitet werden wie sie auch gepostet werden. Da ich innerhalb des Events z.B. auch Mails mit den Indys verschicke passiert es mir schon mal das Event Nummer 2 abgearbeitet wird obwohl Nummer 1 noch gerade ne Mail verschickt. Wie kann ich das verhindern ohne viel Aufwand zu betreiben. QAD reicht völlig, der Bug muß raus. Ne richtige Lösung gibts dann später.
Gruß
UweR
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: Sich überholende Events

  Alt 30. Mai 2006, 10:00
Gib doch einfach deinen Events eine "Seriennummer" mit. Und damit meine ich nicht irgendeine kryptische Zahlenfolge, sondern eben die Zahl, welche der Stelle in der Reihenfolge entspricht. Dann kannst du ja die weitere Ausführung solange unterbrechen bis eben die fehlende vorige Nachricht angekommen ist. Deswegen kannst du ja aber durchaus schon eine spätere Nachricht mit in die Warteschlange einreihen. Ich gehe mal davon aus, daß du eine Warteschlange hast, da ansonsten bei 1:1 Verarbeitung solche Probleme ja nicht autreten dürften.
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#3

Re: Sich überholende Events

  Alt 30. Mai 2006, 10:03
Es könnte helfen eine Critical Section in den Event-Handlern zu benutzen (allerdings ginge dabei die parallele Verarbeitung verloren) - just another hack.
  Mit Zitat antworten Zitat
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#4

Re: Sich überholende Events

  Alt 30. Mai 2006, 10:12
@OLLI

Nein ich habe keine Warteschlange. Mein Problem ist das innerhalb der Indys wohl irgendwo ein ProcessMessages aufgerufen wird und obwohl der 1 Event noch nicht abgearbeitet ist der nächste schon bearbeitet wird.

@Nico:

War meine erste Idee, funzt aber nicht da beide Events innerhalb eines Threads laufen.
Gruß
UweR
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#5

Re: Sich überholende Events

  Alt 30. Mai 2006, 10:12
Zitat von NicoDE:
(allerdings ginge dabei die parallele Verarbeitung verloren)
Sollte ja seinerseits kein Problem sein, weil er es ja serialisieren will
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: Sich überholende Events

  Alt 30. Mai 2006, 10:15
Zitat von UweR:
Nein ich habe keine Warteschlange. Mein Problem ist das innerhalb der Indys wohl irgendwo ein ProcessMessages aufgerufen wird und obwohl der 1 Event noch nicht abgearbeitet ist der nächste schon bearbeitet wird.
Was sind es denn für Nachrichten? Reden wir von Fensternachrichten oder Nachrichten die über die Sockets verschickt und empfangen werden?

Und weshalb ist die Reihenfolge so wichtig - muß ja einen Grund geben.
  Mit Zitat antworten Zitat
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#7

Re: Sich überholende Events

  Alt 30. Mai 2006, 10:27
Das sind Fenstermessages.

Zitat:
Und weshalb ist die Reihenfolge so wichtig - muß ja einen Grund geben.
Da werden Daten ausgewertet die ein Indy-TCP-Thread einliest, in eine Liste schreibt und dann eben die besagte Message postet. Das Problem ist das halt die Daten z.T. von ihren Vorgängern abhängen. Dieser Umstand läßt sich leider auch nicht mal gerade eben ändern. Ist leider alles seit 10 Jahren gewachsen.

Die Weiterverarbeitung der Daten läßt sich aus Threadsicherheitsgründen leider nun mal auch nicht im Indy-Thread erschlagen.
Gruß
UweR
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz