Loop-Schleifen Problem...

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von CodeKing.

    Loop-Schleifen Problem...

    Hey Leuts,

    ich hab ein Programm das ein Text auf den Desktop schreibt und während dessen in einer Schleife eine Textdatei voller Müll schreiben soll. Beides einzeln funkt. Also der Desktoptext allein und die Schleife. Aber sobald die Schleife läuft geht der Timer nicht mehr der den Text auf den Desktop schreibt. In einem Modul geht es auch nicht. Die schleife verhindert immer, dass der Timer läuft.
    Weiß jemand Rat ?(

    Mit Freundlichen Grüßen!
    CodeKing
    Moin,
    wie wäre ein kleines bischen Code, damit wir uns ein Bild davon machen können, was du tust? Ich würde mal vermuten, dass der Prozess aus der Schleife nicht rauskommt und der Timer deswegen nicht läuft. Die möglich eLösung hier wäre die Schleife auf einen eigenen Prozess auszulagern. Du kannst dir mal System.Threading anschauen.

    Grüße
    Phil
    oder in die schleife ein Application.DoEvent() packen um die restlichen resourcen wieder frei zu geben.
    Aber dadurch könnte es sein, dass der Timer nicht mehr korrekt zählt, also wenn 100 ms einstellst würden es ggf. in echtzeit mehr sein.
    Angenommen, du hast einen Button "Button1", der alles in Gang setzt. Dann muss dein Code so aussehen:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(...) Handles Button1.Click
    2. Dim t As New Threading.Thread(New ThreadStart(AddressOf WorkerMethod))
    3. t.Start()
    4. 'Anweisungen, die auf dem Desktop was schreiben
    5. End Sub
    6. Private Sub WorkerMethod()
    7. 'Anweisungen, die die Textdatei zumüllen
    8. End Sub

    Erklärung: Die Methode "WorkerMethod" wir in einem Separaten Thread ausgeführt (Ich hoffe du weißt im Allgemeinen was Multithreading ist und wie es funktioniert).
    Damit läuft das Schreiben auf den Desktop im Mainthread, der auch die Form aufgebaut hat, während das Füllen der Textdatei in einem anderen, unabhängigen Thread läuft und so die Arbeit des ersten nicht behindert. Beachte bitte die Threadsicherheit, wenn du in der WorkerMethod irgendwas an der Form ändern willst (z.B. TextBox1.Text, falls vorhanden). Erfolgt der Aufruf nicht threadsicher, stürzt das Programm mit einer Fehlermeldung ab ("IllegalCrossThreadCall"). Also: Versuche nicht, in der WorkerMethod irgendwas zu machen, was nicht mit der Textdatei zutun hat - es wird in den meisten Fällen zum Absturz führen.

    gruß
    hal2000
    Gruß
    hal2000