Prozesse Interagieren lassen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Mika2828.

    Prozesse Interagieren lassen

    Hallo Allerseits,
    ich arbeite nebenbei an einem VB.Net Funprogramm.

    Der Ablauf des Programms:
    Es bewegt sich eine Form mit einem animierten Bild über den Desktop und führt gelegentlich verschiedene Aktionen aus.
    Das Programm kann mehrfach gestartet werden und startet jeweils mit einem zufälligen Avatar.
    Es gibt positive und negative Avatare mit begrenzten Lebensdauern.
    Treffen nun zwei Avatare aufeinander, unterhalten sie sich erst mal.
    Sollten sie Miteinander harmonieren, ist es möglich das sie das Programm
    ein weiteres Mal starten, um einen neuen Avatar zu erschaffen.
    Jedoch nur bis zu einer Anzahl von 10 gleichzeitig laufenden Programmen.
    (Außer der Benutzer startet das Programm ein weiteres Mal)
    Das ganze läuft dann solange bis keine Avatare mehr übrig sind, die
    Miteinander harmonieren und aufgrund ihrer abgelaufenen Lebensdauer beendet werden.
    (Schließt der Benutzer ein Programm, schließen sich alle)

    Das Wesentliche:
    Bei jedem Start des Programms lese ich den aktuellen Count aus einer ini,
    erweitere den Counter um +1 und schreibe ihn wieder in die ini.
    Hier vergebe ich auch gleich den neuen Fensternamen + Index, um die ganzen
    Fenster verwalten zu können.
    Eigenschaften der Fenster wie z. B. positiv und negativ werden dabei auch gespeichert.
    Beim Beenden eines Programms verringere ich den Counter, und alle darüber
    liegenden Indexe der Fenster um -1.

    Meine Befürchtung:
    Das beim Löschen eines Avatares Fehlfunktionen entstehen, da ja jedes programm
    unwillkürlich auf die Daten in der ini zugreift und damit arbeitet.
    Mit anderen Worten, das eines der Programme noch auf Daten zugreift die grade gändert werden.

    Meine Frage:
    Gibt es eine bessere Methode als das schreiben und ständige lesen aus einer
    ini-Datei, damit die Fenster miteinander interagieren können?

    Edit by hal2000: Schriftart normalisiert.
    Das Chaos beginnt mit komprimierter Ordnung (Steppenpferd 2019)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

    @Steppenpferd Für den Fall, dass Du mehrfach die Exe startest:
    Lass die Exe nur ein Mal starten und erzeuge dann nur einen weiteren Dialog. So greifen alle auf dieselben Daten des Hauptfensters.
    Das Hauptfenster könnte dann unsichtbar sein.
    Wie Du die Dialoge mehrfach aufrufst, gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany Danke für die Antwort.
    Aber so hab ich mir das nicht vorgestellt, da das Programm eventuell noch Teil eines Chats wird's und einmal von anderen Benutzern gestartet werden kann.
    Habe das Problem aber gelöst indem ich keinen Index lösche und stattdessen den Index in eine Blacklist schreibe, wo er dann einfach ignoriert wird.
    Das Chaos beginnt mit komprimierter Ordnung (Steppenpferd 2019)

    Steppenpferd schrieb:

    und einmal von anderen Benutzern gestartet werden kann.
    Wenn Du die Exe zwei Mal startest, sind das in diesem Sinne 2 Programme.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Mika2828 Danke auch für Deine Antwort.
    Wenn ich das richtig verstanden habe wären das in meinem Fall dann ein Server und maximal 9 Clients.
    Dann wüsste der Server was die Clients machen, und umgekehrt.
    Aber die Clients wüssten untereinander nicht was die anderen Clients machen.
    Es ist ja nur ein Programm das mehrfach gestartet werden kann und über den Desktop läuft.
    Wenn zwei gestartete Programme sich auf dem Bildschirm begegnen, entscheiden sie Selbständig welche Aktionen sie ausführen.

    Die derzeitige Lösung mit der Blacklist funktioniert schon zufriedenstellend.
    Habe in den nächsten Wochen sehr viel um die Ohren, aber sobald das Programm fertig ist werde ich es hier mal
    Hochladen, dann könnt ihr es testen um besser zu verstehen was es genau macht .

    Hätte das Thema schon geschlossen, aber das scheint hier im Forum nicht zu gehen.

    Danke nochmal für Eure Antworten
    Das Chaos beginnt mit komprimierter Ordnung (Steppenpferd 2019)

    Steppenpferd schrieb:

    Aber die Clients wüssten untereinander nicht was die anderen Clients machen.
    Was soll denn da kommuniziert werden?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn ich das richtig verstehe besteht mit deiner Blacklist allerdings die einzige "Kommunikation" wer bereits nicht mehr "am leben" ist.
    Warum prüfst du nicht mit GetProcess wieviele und welcher Process noch am leben ist, von dort könntest du sicherlich auch die aktuelle Position des MainWindow rausbekommen, um zu prüfen "Wer "aufeinander trifft".
    Ich sehe deine Blacklist bzw überhaupt dein Ansatz mit der ini. Datei für nicht nötig.

    MfG Mika