"keine rückmeldung"

  • VB.NET

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

    "keine rückmeldung"

    Hallo,

    Einfach gesagt: Mein Programm versucht einen möglichst kurzen Weg zu finden um von A nach B zu kommen. Dazu kann der Benutzer angeben, wie lange (also wie oft das Programm die Funktion aufruft, die zufällig einen Weg generiert und dessen länge mit dem bisher kürzesten Weg vergleicht) das Programm suchen soll. Um ein gutes Ergebnis zu erzielen gibt man natürlich relativ hohe Durchlaufszahlen an.
    Mein Problem ist: Wenn das Programm "lang" dafür braucht (z.B. 20 Sekunden) erscheint oben Neben dem FormTitel "(Keine Rückmeldung)".
    Kann man das irgendwie vermeiden? Also dass das Programm irgendwie Signalisiert dass es noch am Rechnen ist und man warten soll?

    Hier mein Code:

    VB.NET-Quellcode

    1. For i = 1 To CInt(txtTry.Text)
    2. strWeg(i) = wegFinder()
    3. If Len(strWeg(i)) < intShortest Then
    4. strShortest = strWeg(i)
    5. intShortest = Len(strWeg(i))
    6. txtLog.Text = txtLog.Text + " "
    7. End If
    8. txtLog.Text = txtLog.Text + strWeg(i) + vbNewLine
    9. Next


    Natürlich habe ich zuerst die Suchfunktion benutzt, auch Beiträge zu genau der Frage gefunden aber ich konnte nicht so recht was damit anfangen und alle Versuche den dort Geposteten Code in mein Programm einzubauen schlugen fehl.


    MfG
    Sepp Master
    OK habs hinbekommen, danke :)

    Es gibt nur Ein Problem:
    In meinem Programm zeigt ein Textfeld eine Art Log an, welcher Weg gerade im Hintergrund generiert wurde. Da ich in dem Backgroundworker Sub ja keine Textfelder ändern kann wollte ich es dann im Backgroundworker erst alles in einen String speichern und dann wenn er fertig ist den String in das Textfeld kopieren.
    Nur wie frage ich ab ob der Backgroundworker fertig ist?

    So ging es nicht:

    VB.NET-Quellcode

    1. BackgroundWorker1.RunWorkerAsync()
    2. txtLog.Text = strLog
    3. txtAusgabe.Text = strAusgabe


    Ich dachte dass der Code nach dem Aktivieren des Backgroundworkers erst ausgeführt wird, wenn er fertig ist..aber das war nicht der fall: den Textfeldern wurde nichts zugewiesen da die Variablen noch leer waren..


    Oder gibt es noch eine Andere Möglichkeit das Textfeld während des Background vorgangs zu verändern?

    Sepp Master schrieb:

    Oder gibt es noch eine Andere Möglichkeit das Textfeld während des Background vorgangs zu verändern?
    Und ob das geht. Entweder die schlechte Variante mit CheckFor... oder du benutzt Delegates. Dazu steht übrigens was in dem Thread, der oben gepostet wurde ([VB.NET] Multithreading)