Wann Methode einer anderen Form ausführen

  • C#

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Wann Methode einer anderen Form ausführen

    Hey Leute,

    momentan mache ich ein Tippspiel als Projekt und ich bräuchte Hilfe, da ich nicht genau weiß. wann ich meine Methode SpielStarten() aufrufen soll. Ich habe 3 Forms: auf der ersten Form drücke ich starten und werde dann auf die nächste Form gelangt, die mir sagt, dass ich zwischen drei verschiedenen Möglichkeiten auswählen soll. Sobald ich auf einer der drei Möglichkeiten drücke, öffnet sich die letzte Form und die Methode SpielStarten() soll aufgerufen werden. Während SpielStarten() aktiv ist wird in der Form3 das Spiel Simuliert und es wird in Labels ausgegeben, wenn ein Tor gefallen ist. Mein Problem: ich weiß nicht wann ich die Methode aufrufen soll die das Spiel startet, wenn ich es in der Load der Form3 aufrufe, bleibt das Programm stehen und die Form3 wird erst ausgegeben wenn das Spiel zu Ende ist und wenn ich es in der Form2 aufrufe, dann öffnet sich zwar die Form3 und das Spiel läuft wie es soll, aber meine Labels werden von Anfang an komplett weiß angezeigt und erst wenn ein Tor fällt oder das Spiel vorbei ist bekommen sie ihr altes Muster wieder.
    Ich gehe einfach mal davon aus, dass die Simulation sich innerhalb einer Schleife abspielt.
    Dafür gibt es zwei Lösungen:

    Quick'n'Dirty :
    Du rufst zu beginn deiner "Simulationsschleife" immer wieder die .Update Methode der betroffenen Labels auf.
    Dadurch bekommen sie Zeit sich zu Zeichnen, und auf Änderungen ihrer Properties zu reagieren.

    Sauber, aka Multithreading:
    Du packst deine "Simulationsschleife" in einen Task, denn du einfach laufen lässt.
    Nun baust du dir einen Timer, der alle x Sekunden die Labels aktualisiert.
    Ist die Simulation beendet, beendest du auch den Timer.
    Willkommen im Forum. :thumbup:

    DieterFranzen schrieb:

    und nun funktioniert alles
    So soll es sein.
    Schau trotzdem hier mal rein und vergewissere Dich, dass Du Deine Dialoge richtig aufrufst: Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    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!