troubleshooting Question

Creating multithreads against the same class and joining them together after. vb.net

Avatar of ryanmaves
ryanmaves asked on
Programming Languages-Other.NET ProgrammingVisual Basic.NET
5 Comments1 Solution332 ViewsLast Modified:
I have searched as long as my eyes can take it and can't find quite the solution I need.  I'm creating an application that will run multiple SQL queries against a data set and rather than wait for each to finish in turn, I would like to kick off 2 at a time (using different threads for each).  The following code seems to work to create one additional thread that works, but anything beyond that seems to get destroyed (or doesn't work).

'First I create a data reader that determines how many total SQL queries need to be run
'I then loop through them...and I'm TRYING (failing) to run 2 concurrently...then waiting
'for them to finish...then moving on to the next 2

'Inside the RUNSQL class, I'm just running a simple statement and getting one value back...

'What is really strange is that if I run this in debug mode and step through it, it works...so
'the code must be stepping on itself in "real time"

'In the real code I'm trying to run 5 threads, but I've cut it back for brevity sake

If oRST.HasRows Then
            Dim intCounter As Integer = 0
            Dim oThread(1) As System.Threading.Thread
            Dim oRunSQL As New RunSQL
            Do While 1 = 1
                oRST.Read()
                intFTPKey = oRST.Item("ftp_key")
                If Err.Number <> 0 Then Exit Do
                strSQL = oRST.Item("ifs_sql").ToString
                oThread(intCounter) = New Thread(AddressOf oRunSQL.Runner)
                oRunSQL.vSQL = strSQL 'This is where I pass the unique SQL statement to the new thread
                oThread(intCounter).IsBackground = True
                oThread(intCounter).Start()
                intCounter = intCounter + 1
                If intCounter = 1 Then
                    intCounter = 0
                    oThread(0).Join()
                    oThread(1).Join()
 
                End If
            Loop
            oThread(0).Join()
            oThread(1).Join()
        End If

Anyone know what the heck I'm missing here???
ASKER CERTIFIED SOLUTION
Join our community to see this answer!
Unlock 1 Answer and 5 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 5 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros