vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Thread anhalten/fortsetzen und sicher beenden 
Autor: ModeratorDaveS (Moderator)
Datum: 12.09.08 14:21

Eine einfache Lösung wäre die Variable running zu verwenden, was der Thread zurücksetzt am Ende. Bei solchen Sachen muss aber immer auf race conditions aufpassen. Weil zwei Dinge "parallel" laufen, sogar physich auf Prozessoren mit mehreren Kernen, kann man nicht wissen genau was zuerst gemacht wird bzw fertig wird. ZB wichtig hier ist die Reihenfolge
        running = True
        term = True
in Button3_Click(). Andersrum könnte der Thread term prüfen und beendet sein bevor running = true gesetzt wird, in welchem Fall, die Anwendung in der DoEvents Schleife hängebleiben würde.
 
    Public Delegate Sub LogLineHandler(ByVal t As String)
 
    Public Sub LogLine(ByVal t As String)
        If Me.InvokeRequired Then
            Me.Invoke(New LogLineHandler(AddressOf LogLine), New String() {t})
            Return
        End If
        RichTextBox1.AppendText(t & vbCrLf)
        RichTextBox1.ScrollToCaret()
    End Sub
 
    ' Stop thread
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        LogLine("Stopping thread")
        halt.Reset()
        running = False
    End Sub
 
    ' Restart thread
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button2.Click
        LogLine("Restarting thread")
        running = True
        halt.Set()
    End Sub
 
    ' Thread routine
    Private Sub doit()
        While Not term
            If Not halt.WaitOne(0, False) Then
                LogLine("Now I'm going to stop, probably")
                halt.WaitOne()
                LogLine("Now I'm running (again)")
            End If
            LogLine("Thread running")
            Thread.Sleep(500)
        End While
        LogLine("Thread terminating")
        running = False
    End Sub
 
    ' End application
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button3.Click
        LogLine("Terminating")
        running = True
        term = True
        halt.Set() ' Ensure thread is running
        While running
            Application.DoEvents()
            Thread.Sleep(100)
        End While
        t.Join()
        LogLine("Application terminating")
        Me.Close()
    End Sub

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Thread anhalten/fortsetzen und sicher beenden8.790keco11.09.08 12:14
Re: Thread anhalten/fortsetzen und sicher beenden5.700ModeratorDaveS11.09.08 13:45
Re: Thread anhalten/fortsetzen und sicher beenden5.950keco11.09.08 14:24
Re: Thread anhalten/fortsetzen und sicher beenden5.275ModeratorDaveS11.09.08 14:30
Re: Thread anhalten/fortsetzen und sicher beenden5.190keco11.09.08 14:34
Re: Thread anhalten/fortsetzen und sicher beenden5.180keco11.09.08 14:42
Re: Thread anhalten/fortsetzen und sicher beenden6.093ModeratorDaveS11.09.08 15:28
Re: Thread anhalten/fortsetzen und sicher beenden5.016ModeratorDaveS11.09.08 17:31
Re: Thread anhalten/fortsetzen und sicher beenden5.051keco12.09.08 12:01
Re: Thread anhalten/fortsetzen und sicher beenden5.117ModeratorDaveS12.09.08 12:49
Re: Thread anhalten/fortsetzen und sicher beenden4.970ModeratorDaveS12.09.08 13:09
Re: Thread anhalten/fortsetzen und sicher beenden5.372keco12.09.08 13:33
Re: Thread anhalten/fortsetzen und sicher beenden5.052ModeratorDaveS12.09.08 14:21
Re: Thread anhalten/fortsetzen und sicher beenden5.013keco12.09.08 15:11
Re: Thread anhalten/fortsetzen und sicher beenden5.146ModeratorDaveS12.09.08 15:22
Re: Thread anhalten/fortsetzen und sicher beenden5.031keco12.09.08 15:33

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel