vb.net multithreading try catch abort the correct thread

Basically I have 18 threads that all run the same subroutine but are given different stored procedure names to run. This part works great, I am trying to do the catch part of the try catch and I have come to the conclusion that if a stored procedure errors I don't know how to tell the subroutine to abort the correct thread ?

so the question is how does the subroutine know the name of the thread that is calling it so that I can do some sort of "thread name".abort to stop the thread with the error.
Bryon HuffmanAsked:
Who is Participating?
AndyAinscowConnect With a Mentor Freelance programmer / ConsultantCommented:
Maybe I am missing something but doesn't the thread stop when you exit your 'DoWork' subroutine.  In other words you don't need to do anything other than have an 'exit sub' inside the catch block.
Bryon HuffmanAuthor Commented:
here is the code:

Dim starttime As DateTime = Now
        Dim newThread As New Thread(AddressOf DoWork)
        Dim newThread1 As New Thread(AddressOf DoWork)
        Dim newThread2 As New Thread(AddressOf DoWork)
        Dim newThread3 As New Thread(AddressOf DoWork)
        Dim newThread4 As New Thread(AddressOf DoWork)
        Dim newThread5 As New Thread(AddressOf DoWork)
        Dim newThread6 As New Thread(AddressOf DoWork)
        Dim newThread7 As New Thread(AddressOf DoWork)
        Dim newThread8 As New Thread(AddressOf DoWork)
        Dim newThread9 As New Thread(AddressOf DoWork)
        Dim newThread10 As New Thread(AddressOf DoWork)
        Dim newThread11 As New Thread(AddressOf DoWork)
        Dim newThread12 As New Thread(AddressOf DoWork)
        Dim newThread13 As New Thread(AddressOf DoWork)
        Dim newThread14 As New Thread(AddressOf DoWork)
        Dim newThread15 As New Thread(AddressOf DoWork)
        Dim newThread16 As New Thread(AddressOf DoWork)
        Dim newThread17 As New Thread(AddressOf DoWork)

Public Shared Sub DoWork(ByVal data As Object)
        'Dim spname As String
        'Dim tname As String
        'Dim split As String() = data.Split(New [Char]() {" "c, ","c, "."c, ":"c, CChar(vbTab)})
        'spname = split(0)
        'tname = split(1)
        Dim sqlconnstring As String = My.Settings.datamartconnstring
        Console.WriteLine("Static thread procedure. Data='{0}'", data)


            Dim sqlConn As New SqlConnection(sqlconnstring)
            Dim cmd As New SqlCommand

            Dim myParm As SqlParameter = cmd.Parameters.Add("@RowCount", SqlDbType.Int)
            myParm.Direction = ParameterDirection.ReturnValue
            Dim reader As SqlDataReader

            cmd.CommandText = data
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Connection = sqlConn
            cmd.CommandTimeout = 0

            reader = cmd.ExecuteReader()
            ' Data is accessible through the DataReader object here.

            If myParm.Value < 1 Then
                MsgBox("Store procedure " & data & " Returned no records")
            End If
            Dim Recordsreturned As Integer = myParm.Value

        Catch db1 As DataException
            ********** here is where I think I need to stop/abort the thread ***********

        Catch ex1 As Exception
            ********** here is where I think I need to stop/abort the thread ***********

        End Try

    End Sub
Bryon HuffmanAuthor Commented:
I guess I thaught that I needed to do more with thread in reference to an error being thrown.
I haven't been able to make it cause an error to test it yet but was trying to be pro-active
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

Fernando SotoRetiredCommented:
Can you post the code so that we can see what you are talking about. Also is this BackgroundWorker objects or are you handling the threading yourself?
AndyAinscowFreelance programmer / ConsultantCommented:
I think you are taking suitable steps with the try...catch logic, you could try to make it crash by passing a procedure name in that doesn't exist for example.
Bryon HuffmanAuthor Commented:
I've requested that this question be closed as follows:

Accepted answer: 0 points for Bryon_connexus's comment #a40004684

for the following reason:

I didn't need to post this question because it is being handled inside of the subroutine.
AndyAinscowFreelance programmer / ConsultantCommented:
erm - isn't that what I told you.
Fernando SotoRetiredCommented:
@Bryon_connexus, you would not have known that unless  AndyAinscow had not posted the solution.
All Courses

From novice to tech pro — start learning today.