• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 574
  • Last Modified:

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)

            '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

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

                '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

                'Reset SendRow string
                sendRow = ""

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

Open in new window

1 Solution
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).
lrbristerAuthor Commented:
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.

Join & Write a Comment

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now