''' <summary>
''' Haupt-Thread wurde abgebrochen
''' </summary>
''' <remarks></remarks>
Protected Overrides Sub TaskAbborted()
SyncLock Me
'Event nach Außen mittels Invoke()
Dim e As New MTP_ThreadEventArgs(Nothing, Nothing, False)
OnEvent(Me, CType(e, EventArgs), AbbortedEvent)
mStartRequested = False
End SyncLock
End Sub
''' <summary>
''' Abbruch wurde angefordert
''' </summary>
''' <param name="Cancel">Abbruch kann durch Cancel=True noch
' verhindert werden</param>
''' <remarks>wird direkt vor dem Abbruch des Haupt-Threads
' ausgeführt </remarks>
Protected Overrides Sub TaskAbbortRequest(ByRef Cancel As Boolean)
SyncLock Me
'Event nach Außen mittels Invoke()
Dim e As New MTP_ThreadEventArgs(Nothing, Nothing, False)
OnEvent(Me, CType(e, EventArgs), AbbortRequestedEvent)
Cancel = e.Cancel
End SyncLock
End Sub
''' <summary>
''' vor Beginn SingleThread anzahl ermitteln
''' </summary>
''' <param name="Cancel">Start kann hier durch setzen von
' Cancel=True verhindert werden</param>
''' <remarks>Wird direkt vor DoWork() ausgeführt</remarks>
Protected Overrides Sub TaskStart(ByRef Cancel As Boolean)
SyncLock Me
mPaused = False
Dim e As New MTP_ThreadEventArgs(Nothing, Nothing, False)
OnEvent(Me, CType(e, EventArgs), StartedEvent)
Cancel = e.Cancel
'SingleTasks Anzahl ermitteln...
mCPU_Count = MultiTaskProcessor(Of T).GetCPUCount
If mMaxTaskCount = 0 Then
'Automatik (Anzahl der Prozessorkerne abzügl. 1 für
' aufrufendes Programm?)
mAnzTasks = mCPU_Count - 1
Else
'Vorgabe...
mAnzTasks = mMaxTaskCount
End If
If mAnzTasks < 1 Then mAnzTasks = 1
End SyncLock
End Sub
''' <summary>
''' Arbeit ist hier abgeschlossen.
''' </summary>
''' <remarks></remarks>
Protected Overrides Sub WorkCompleted()
'Event nach Außen mit Invoke()
Dim e As New MTP_ThreadEventArgs(Nothing, Nothing, False)
OnEvent(Me, CType(e, EventArgs), CompletedEvent)
SyncLock Me
mStartRequested = False
End SyncLock
End Sub
End Class |