Thread to monitor Threadstate of "Worker" threads.

In my While statement below I kick off a thread for each loop through the process

The thread is called phoneWorkerThread

How do I wrap that so I can have one thread monitoring ALL the worker threads thread state?

I want to monitor this part
  Dim phoneWorkerThread As New Thread(AddressOf startPhoneMonitoring)
  phoneWorkerThread.Start(sendRow)


        Try
            'Som kind of messaging that process is initiated
            Me.Text = "HTTP POST STARTED"

            Dim threadCounter As Integer = 1

            While returnedPhoneTable.Rows.Count > 0
                'Declare string to hold comma seperated phone string from datatable
                Dim dataRowString As String = ""

                'Declare var for data row in loaded data table
                Dim row = returnedPhoneTable.Rows(0)

                'Populate datarow string
                dataRowString = row("phoneList").ToString()

                'Dev - Show comma seperated phone list
                'Debug.Write(vbCrLf + vbCrLf + "Phonelist this row: " & dataRowString)

                'Declare string() to handle split by comma
                Dim sites As String() = dataRowString.Split(","c)
                Dim sendRow As String = ""

                'For each phone number build the command line
                'And group together all 7 numbers
                For Each s As String In sites
                    'Get command for this particular phone 
                    postData = getCommandString(s)

                    'Append to sendRow with line break to send all 7 phones to monitor at once
                    sendRow = sendRow + postData + vbCrLf
                Next

                'Declare and start individual thread for each loop
                Dim phoneWorkerThread As New Thread(AddressOf startPhoneMonitoring)
                phoneWorkerThread.Start(sendRow)

                'Some kind of messaging that shows how many threads are running
                Me.Text = "HTTP POST Thread Count: " + threadCounter

                'increase counter for next loop
                threadCounter = threadCounter + 1

                'Remove datarow just sent from datatable
                returnedPhoneTable.Rows.RemoveAt(0)

                'Reset SendRow string
                sendRow = ""

                'Since telephoy vendor needs about 1/2 second to process each phone...give plenty of time before next process start.
                System.Threading.Thread.Sleep(7000)
            End While
        Catch ex As Exception
            Debug.WriteLine("Error on record " & ErrorOnLoopNumber & vbCrLf & ex.Message.ToString)
        End Try

Open in new window

Larry Bristersr. DeveloperAsked:
Who is Participating?
 
CodeCruiserConnect With a Mentor Commented:
You would need to add these threads to some sort of collection (a List(of Thread) variable) at class level. Then start the monitoring thread after starting all other threads and adding them to this collection. Monitoring thread then goes through each thread in the collection and checks in ThreadState and if its anything other than Running then do something (like restarting it).
0
 
Larry Bristersr. DeveloperAuthor Commented:
Thanks
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.