Schreibmaschine

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Hastling.

    Ja gibt es:

    VB.NET-Quellcode

    1. Dim sSatz As String = "Ludwigshafen"
    2. For i As Integer = 0 To sSatz.Length - 1
    3. Label1.Text &= sSatz(i).ToString
    4. Threading.Thread.Sleep(1000) 'zeit abstand
    5. Next

    So müsste es gehen ..
    Viel Spaß damit =)

    mfg Tim ;)
    Das mit dem:

    VB.NET-Quellcode

    1. Threading.Thread.Sleep(100)


    funktioniert irgendwie nicht. Das Programm stürzt kurz ab
    und zeigt mir dann auf einmal den ganzen Satz.


    Gibt es einen anderen "schlafen"- Befehl, wo das Programm
    nicht abstürzt??


    Danke im Voraus
    Hastling

    @ TG22997: Trotzdem vielen Dank, genau das was ich gesucht habe.

    Hastling schrieb:

    Das mit dem:

    VB.NET-Quellcode

    1. Threading.Thread.Sleep(100)


    funktioniert irgendwie nicht. Das Programm stürzt kurz ab
    und zeigt mir dann auf einmal den ganzen Satz.


    Gibt es einen anderen "schlafen"- Befehl, wo das Programm
    nicht abstürzt??


    Danke im Voraus
    Hastling

    @ TG22997: Trotzdem vielen Dank, genau das was ich gesucht habe.

    Ich mach dir grad en gescheiten code ...
    ich meld mich dann wieder. bg
    Du musst mit delegaten arbeiten. Ich hab dir mal ein code geschrieben.
    Die deklarierung kannst du noch ändern ist mir auf die schnelle nichts besseres
    eingefallen^^ hier die klasse:

    VB.NET-Quellcode

    1. Dim sSatz As String = "Hallo ich bin der Klaus!"
    2. Private Delegate Sub Delegate_It(ByVal txt As String)
    3. Sub Schreiben(ByVal geschriebenes As String)
    4. Label1.Text &= geschriebenes
    5. Label1.Update()
    6. End Sub
    7. Private Sub AndererThread()
    8. Dim del As New Delegate_It(AddressOf Schreiben)
    9. For i As Integer = 0 To sSatz.Length - 1
    10. del.Invoke(sSatz(i).ToString)
    11. Threading.Thread.Sleep(500)
    12. Next
    13. End Sub
    14. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    15. Label1.Text = Nothing
    16. AndererThread()
    17. End Sub

    brauchst nur einen button = button1
    und label = label1

    edit:
    cracky@
    hier arbeitet man lieber mit delegaten und aktuallisiert das Label.
    Bei deiner Methode würde es das gleiche problem geben wie bei meinem Code vorhin.
    Nimmst du dann noch den Sleep Timer hinzu würde es ein Problem mit dem
    Threadübergreifer bekommen.

    Mein Code habe ich übrigens getestet und er funzt.

    mfg Tim ;)

    Cr4ckY schrieb:

    TG22997 schrieb:


    Und en Timer is auch nicht dabei.


    Sowas muss ich auch nicht dazuschreiben da er ja auch selber rumprobieren kann..und ich hab doch grad schon geschrieben, dass er prüfen soll ob Label Text = txt. Wenn ja dann stoppen.

    Ja hast ja recht im prinzip ... naja egal muss er selbst ausprobiern x'P
    Übrigens Hastling, nette HP und hamma pic von dir muss schon sagen. 8o
    Cracky komm ma in icq on.

    mfg :thumbsup:
    Der Thread.Sleep hat den Nachteil, dass er den GUI-Thread sperrt und damit das Erneuern von Controls oder Ziehen des Fensters.

    Für einfache Probleme nimm dafür lieber eine eigenen Sleep-Funktion, z.B.

    VB.NET-Quellcode

    1. Public Sub sleepMS(ByVal ms As Integer)
    2. Dim tOut As Date = Now().AddMilliseconds(ms)
    3. While tOut > Now()
    4. Application.DoEvents()
    5. End While
    6. End Sub

    Kangaroo schrieb:

    Der Thread.Sleep hat den Nachteil, dass er den GUI-Thread sperrt und damit das Erneuern von Controls oder Ziehen des Fensters.

    Für einfache Probleme nimm dafür lieber eine eigenen Sleep-Funktion, z.B.

    VB.NET-Quellcode

    1. Public Sub sleepMS(ByVal ms As Integer)
    2. Dim tOut As Date = Now().AddMilliseconds(ms)
    3. While tOut > Now()
    4. Application.DoEvents()
    5. End While
    6. End Sub

    Deshalb verwende ich hier die Delegate die den Threadübergreifer verhindert... :rolleyes:
    Und es reicht aus wenn man den Sleep-Timer auf 50 stellt dann fällt das auch nicht auf das
    man die Form solange nicht ziehen kann ...

    mfg Tim ;)
    Nun, ich denke ich kann Deinen Code lesen, danke. Wie generell bei allen Programmiersprachen gibt es meist mehrere Alternativen ein Problem zu lösen. Insofern muss man halt nicht mit Delegaten arbeiten, sondern es geht auch mit einer einfachen DoEvents-Schleife, um das Message-Pumping zu ermöglichen. Aber das mag jeder eben so handhaben wie er/sie möchte.

    Kangaroo schrieb:

    Nun, ich denke ich kann Deinen Code lesen, danke. Wie generell bei allen Programmiersprachen gibt es meist mehrere Alternativen ein Problem zu lösen. Insofern muss man halt nicht mit Delegaten arbeiten, sondern es geht auch mit einer einfachen DoEvents-Schleife, um das Message-Pumping zu ermöglichen. Aber das mag jeder eben so handhaben wie er/sie möchte.

    Ne ich geb dir da voll und ganz recht Kangaroo^^
    Weil es stört ja auch wenn es dann abstürzt wenn man es verschieben will...
    Was wenn man das Interval auf 50 stellt nicht stören würde.

    mfg Tim ;) :thumbsup:

    TG22997 schrieb:

    "Nun, ich denke ich kann Deinen Code lesen, danke. Wie generell bei allen Programmiersprachen gibt es meist mehrere Alternativen ein Problem zu lösen. Insofern muss man halt nicht mit Delegaten arbeiten, sondern es geht auch mit einer einfachen DoEvents-Schleife, um das Message-Pumping zu ermöglichen. Aber das mag jeder eben so handhaben wie er/sie möchte."

    Ne ich geb dir da voll und ganz recht Kangaroo^^
    Weil es stört ja auch wenn es dann abstürzt wenn man es verschieben will...
    Was wenn man das Interval auf 50 stellt nicht stören würde.


    mfg Tim ;) :thumbsup:

    Jiepp, ich gebe euch auch Recht! :thumbsup: :D :thumbsup:

    Gruss
    Hastling

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Hastling“ ()