Hello All,
I have a question regardind=g accessing shared resources.

I have a for loop in which i am creating many threads..

And each thread at some point of time they call this function :

Public Function UpdateMailJobs(ByVal con As Data.DataRow, ByVal jobid As String, ByVal varName As String, ByVal value As String) As Boolean
        Dim connection As New SQLManager.cls_SQLManager
        connection.ConnectionString = CstrG(con("ConnectionString"))
        connection.CommandText = "UPDATE MailJob SET " & varName & " = " & value & " Where JobID=" & jobid
        registerError(con, "MailJob table update(updatemailjobs-fn1) finished(" & jobid & ")")
        Catch ex As Exception
            Return False
        End Try
        Return True
    End Function

But i am not very sure weather this is correct or not ( Regarding the mutex i have used) . Can any one please advice ? Will this work perfectly even if there are 10 threads runinng at the same time ? Thanks in advance ..

6 Years
Discussion Span
Last Post by the_carpenter

I don't know if using Mutex is wrong or not... I've never had to use it.

I've written several multi-threaded applications and when it comes to avoiding crossthreading in Shared Classes this is the only way I've done it.

So lets say I have a class ( clsDoSomeWork ) that will be our threads. And clsDoSomeWork as a method ( DoItNow( Name, Time) that we call to start each thread.

Public Class clsDoSomeWork

'This is our lock object
Private Shared objWorkLock as New Object

'This is our starting point for each thread
Public Sub DoItNow(ByVal strName as String, ByVal dtTime as DateTime)

'Here we would have some code that isn't going to access methods on other threads.
'For Example
For i as Integer = 1 to 5
   strName = String.Concat(strName, i.ToString)

'Now we have code that accesses a public variable or method on another thread.
'So we lock it down.
SyncLock objWorkLock

'Do some stuff like save data or write to the registry, etc.

End SyncLock

End Class
This article has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.