Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 736
  • Last Modified:

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.
0
Bryon Huffman
Asked:
Bryon Huffman
  • 3
  • 3
  • 2
1 Solution
 
Bryon HuffmanAuthor Commented:
here is the code:

Dim starttime As DateTime = Now
        Dim newThread As New Thread(AddressOf DoWork)
        newThread.Start("MakeAccountIndividualTable")
        Dim newThread1 As New Thread(AddressOf DoWork)
        newThread1.Start("MakeAccountTable")
        Dim newThread2 As New Thread(AddressOf DoWork)
        newThread2.Start("MakeachATMTable")
        Dim newThread3 As New Thread(AddressOf DoWork)
        newThread3.Start("MakeATMRawTogether")
        Dim newThread4 As New Thread(AddressOf DoWork)
        newThread4.Start("makebase_dtrcdTable")
        Dim newThread5 As New Thread(AddressOf DoWork)
        newThread5.Start("Makebase_ltrcdTable")
        Dim newThread6 As New Thread(AddressOf DoWork)
        newThread6.Start("MakeDraftconversionnbrTable")
        Dim newThread7 As New Thread(AddressOf DoWork)
        newThread7.Start("MakeemailTable")
        Dim newThread8 As New Thread(AddressOf DoWork)
        newThread8.Start("MakeIndividualTable")
        Dim newThread9 As New Thread(AddressOf DoWork)
        newThread9.Start("MakeMembershipTable")
        Dim newThread10 As New Thread(AddressOf DoWork)
        newThread10.Start("MakeMembershipparticipantTable")
        Dim newThread11 As New Thread(AddressOf DoWork)
        newThread11.Start("MakemembershippropertyTable")
        Dim newThread12 As New Thread(AddressOf DoWork)
        newThread12.Start("MakemembershipserviceTable")
        Dim newThread13 As New Thread(AddressOf DoWork)
        newThread13.Start("MakeMembershipsafeboxTable")
        Dim newThread14 As New Thread(AddressOf DoWork)
        newThread14.Start("MakeOwnershipcategoryTable")
        Dim newThread15 As New Thread(AddressOf DoWork)
        newThread15.Start("MakeProcessinggroupTable")
        Dim newThread16 As New Thread(AddressOf DoWork)
        newThread16.Start("MakeProductTable")
        Dim newThread17 As New Thread(AddressOf DoWork)
        newThread17.Start("MakeProductTable")


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)


        Try

            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
            sqlConn.Open()

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

            sqlConn.Close()
            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 ***********
            MsgBox(db1.InnerException.Message.ToString)

        Catch ex1 As Exception
            ********** here is where I think I need to stop/abort the thread ***********
            MsgBox(ex1.InnerException.Message.ToString)

        End Try


    End Sub
0
 
AndyAinscowCommented:
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.
0
 
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
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
Fernando SotoCommented:
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?
0
 
AndyAinscowCommented:
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.
0
 
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.
0
 
AndyAinscowCommented:
erm - isn't that what I told you.
0
 
Fernando SotoCommented:
@Bryon_connexus, you would not have known that unless  AndyAinscow had not posted the solution.
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

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