2 Commits

Author SHA1 Message Date
Emmanuele Sassi 9ad019b6fd Merge remote-tracking branch 'origin/develop' into EmmanueleVersion 2023-05-17 13:18:39 +02:00
Emmanuele Sassi 4f862b2c8d - migliorie restart 2023-05-17 13:11:12 +02:00
+56 -50
View File
@@ -222,37 +222,38 @@ Public Class ProcMan
If Not bOk Then Thread.Sleep(10) If Not bOk Then Thread.Sleep(10)
End While End While
If bOk AndAlso (IsNothing(ThreadList) OrElse ThreadList.Count = 0 OrElse IsNothing(ThreadList(0))) Then If bOk AndAlso (IsNothing(ThreadList) OrElse ThreadList.Count = 0 OrElse IsNothing(ThreadList(0))) Then
ThreadList = New Thread(m_MaxCamInstances - 1) {} ThreadList = New Thread(m_MaxCamInstances - 1) {}
ThreadDataList = New ThreadData(m_MaxCamInstances - 1) {} ThreadDataList = New ThreadData(m_MaxCamInstances - 1) {}
For nThreadIndex = 0 To m_MaxCamInstances - 1 For nThreadIndex = 0 To m_MaxCamInstances - 1
Dim ThreadId As Integer = nThreadIndex Dim ThreadId As Integer = nThreadIndex
ThreadList(nThreadIndex) = New Thread(Sub() ThreadList(nThreadIndex) = New Thread(Sub()
ThreadFunction(ThreadId) ThreadFunction(ThreadId)
End Sub) End Sub)
ThreadList(nThreadIndex).SetApartmentState(ApartmentState.STA) ThreadList(nThreadIndex).SetApartmentState(ApartmentState.STA)
' avvio thread di gestione della macchina che avvia la connessione ' avvio thread di gestione della macchina che avvia la connessione
ThreadList(nThreadIndex).Start() ThreadList(nThreadIndex).Start()
Thread.Sleep(10) Thread.Sleep(10)
Next
End If
' se qualche processo in stop, lo faccio ripartire
For ThreadIndex = 0 To ThreadList.Count - 1
Dim Thread = ThreadList(ThreadIndex)
If Thread.ThreadState = ThreadState.Stopped Then
Thread.Abort()
Dim ThreadId As Integer = ThreadIndex
Thread = New Thread(Sub()
ThreadFunction(ThreadId)
End Sub)
End If
Next Next
If n30SecCounter <= 30 Then End If
n30SecCounter += 1 ' se qualche processo in stop, lo faccio ripartire
Else For ThreadIndex = 0 To ThreadList.Count - 1
n30SecCounter = 1 Dim Thread = ThreadList(ThreadIndex)
If Thread.ThreadState = ThreadState.Stopped AndAlso Thread.ThreadState = ThreadState.Aborted AndAlso
Thread.ThreadState = ThreadState.Suspended Then
Thread.Abort()
Dim ThreadId As Integer = ThreadIndex
Thread = New Thread(Sub()
ThreadFunction(ThreadId)
End Sub)
End If End If
Thread.Sleep(1000) Next
If n30SecCounter <= 30 Then
n30SecCounter += 1
Else
n30SecCounter = 1
End If
Thread.Sleep(1000)
End While End While
@@ -755,18 +756,17 @@ Public Class ProcMan
UpdateThreadCurrentStatus() UpdateThreadCurrentStatus()
End Sub End Sub
Private Sub txtNumThread_TextChanged(sender As Object, e As EventArgs) Handles txtNumThread.TextChanged Private Sub txtNumThread_TextChanged(sender As Object, e As EventArgs) Handles txtNumThread.TextChanged
Dim numReq As Integer = 1 Dim numReq As Integer = 1
Integer.TryParse(txtNumThread.Text, numReq) Integer.TryParse(txtNumThread.Text, numReq)
' controllo se cambiato il num thread ' controllo se cambiato il num thread
If numReq <> m_MaxCamInstances Then If numReq <> m_MaxCamInstances Then
If m_bStopProcess = False Then stopAllThreads()
stopAllThreads() Thread.Sleep(100)
End If SetMaxCamInstances(numReq)
' imposto 'startAllThreads()
SetMaxCamInstances(numReq) End If
End If End Sub
End Sub
Private isUpdatingThreads As Boolean = False Private isUpdatingThreads As Boolean = False
@@ -913,16 +913,22 @@ Public Class ProcMan
CheckStartAutoRestart() CheckStartAutoRestart()
End Sub End Sub
Private Sub CheckStartAutoRestart() Private Sub CheckStartAutoRestart()
TimerCheck.Enabled = chkAutoRestart.Checked TimerCheck.Enabled = chkAutoRestart.Checked
If chkAutoRestart.Checked Then If chkAutoRestart.Checked Then
TimerCheck.Start() If m_ExecutionThread.ThreadState = ThreadState.Aborted OrElse m_ExecutionThread.ThreadState = ThreadState.Stopped OrElse
Task.Delay(500) m_ExecutionThread.ThreadState = ThreadState.Suspended Then
stopAllThreads()
Thread.Sleep(200)
m_ExecutionThread.Abort()
Thread.Sleep(200)
startAllThreads() startAllThreads()
Else End If
TimerCheck.Stop() TimerCheck.Start()
End If Else
End Sub TimerCheck.Stop()
End If
End Sub
Private Sub TimerCheck_Tick(sender As Object, e As EventArgs) Handles TimerCheck.Tick Private Sub TimerCheck_Tick(sender As Object, e As EventArgs) Handles TimerCheck.Tick
restartAll() restartAll()