vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
... Code ... 
Autor: Schü
Datum: 06.08.10 15:56

Public Overridable Sub Abort()
            If Not mThread Is Nothing Then
                Dim Ex As Boolean = False
                TaskAbbortRequest(Ex)
                If Not Ex Then
                    mThread.Abort()
                    TaskAbborted()
                End If
            End If
        End Sub
        ''' <summary>
        ''' Haupt-Thread läuft oder ist abgebrochen
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks>wenn HauptThread auf Pause steht ist Klasse immer noch 
        ' aktiv!</remarks>
        Public Overridable Function IsAlive() As Boolean
            If mThread Is Nothing Then Return False
            Return Not mIsCompleted
        End Function
        ''' <summary>
        ''' Aufgabe(n) wurden abgeschlossen
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overridable ReadOnly Property IsCompleted() As Boolean
            Get
                SyncLock Me
                    Return mIsCompleted
                End SyncLock
            End Get
        End Property
        ''' <summary>
        ''' gesamte Ausführung abbrechen
        ''' </summary>
        ''' <remarks>"Soft"-Abbruch, Input-Liste wird angehalten</remarks>
        Public Overridable Sub RequestStop()
            SyncLock Me
                mRequestStop = True
                If mDebugMode Then Debug.WriteLine(mThreadName & "::" & "Stop" & _
                  "Requested")
            End SyncLock
        End Sub
 
        ''' <summary>
        ''' Hier wird die Hauptaufgabe durchgeführt, die in einem seperaten 
        ' Thread läuft
        ''' </summary>
        ''' <remarks></remarks>
        Protected Overridable Sub m_DoTask()
            Try
                Dim bCancel As Boolean = False
 
                '(Hier kann ein Abbruch nochmals erfolgen, bevor irgendetwas 
                ' gestartet wird)
                TaskStart(bCancel) '(muss in abgeleiteter Klasse überschrieben 
                ' werden))
 
                If Not bCancel Then
                    mStartTime = Now
                    DoTask() '(DoTask() muss in abgeleiteter Klasse 
                    ' überschrieben werden)
                    mWorkTime = DateTime.Now.Subtract(mStartTime)
                End If
            Catch ex As Exception
                Debug.WriteLine( _
                  System.Reflection.MethodInfo.GetCurrentMethod.DeclaringType.N_
                  ame & "-" & _
                  System.Reflection.MethodBase.GetCurrentMethod.Name & "::" & _
                  mThreadName & ": " & ex.Message)
            Finally
                mIsCompleted = True
                mRequestStop = True
 
                'Fertigstellung signalisieren...
                WorkCompleted()
 
                'nach Außen Fertigstellung signalisieren...
                mAutoResetEvent.Set()
            End Try
        End Sub
        Protected Overridable Sub m_Reset()
            Try
                Dim i As Integer
                If mDebugMode Then Debug.WriteLine(mThreadName & "::" & "Reset")
 
                If IsAlive() Then
                    RequestStop()
                    Do While IsAlive()
                        Application.DoEvents()
                        i += 1
                        If i = 10 Then
                            Abort()
                            Exit Do
                        End If
                    Loop
                End If
 
                If IsAlive() Then Exit Sub
 
                mThread = New System.Threading.Thread(AddressOf m_DoTask)
                With mThread
                    .IsBackground = mIsBackground
                    .Name = mThreadName
                End With
                mIsCompleted = False
                mRequestStop = False
                mAutoResetEvent.Reset()
            Catch ex As Exception
                Debug.WriteLine( _
                  System.Reflection.MethodInfo.GetCurrentMethod.DeclaringType.N_
                  ame & "-" & _
                  System.Reflection.MethodBase.GetCurrentMethod.Name & "::" & _
                  mThreadName & ": " & ex.Message)
            End Try
        End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Klasse für MultiThreading2.503Schü06.08.10 14:16
Re: Klasse für MultiThreading1.739Schü06.08.10 14:19
Re: Klasse für MultiThreading1.789ModeratorDaveS06.08.10 14:50
Re: Klasse für MultiThreading2.043Schü06.08.10 15:34
... Code ...1.888Schü06.08.10 15:48
... Code ...1.760Schü06.08.10 15:49
... Code ...1.871Schü06.08.10 15:51
... Code ...1.734Schü06.08.10 15:51
... Code ...1.808Schü06.08.10 15:52
... Code ...1.851Schü06.08.10 15:52
... Code ...1.762Schü06.08.10 15:53
... Code ...1.833Schü06.08.10 15:54
... Code ...1.698Schü06.08.10 15:56
... Code ... Ende1.783Schü06.08.10 15:57
Re: Klasse für MultiThreading1.755ModeratorRalfE06.08.10 19:17
Re: Klasse für MultiThreading1.730Schü07.08.10 15:35
Re: Klasse für MultiThreading1.735ModeratorDaveS07.08.10 16:04
Re: Klasse für MultiThreading1.802ModeratorRalfE07.08.10 16:33
Re: Klasse für MultiThreading1.729Schü07.08.10 17:17
Link zum Projekt2.003Schü09.08.10 11:30
1. Korrektur1.712Schü10.08.10 07:55
2. Korrektur1.729Schü10.08.10 08:26
3. Korrektur1.721Schü11.08.10 09:49

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-2025 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