En base a lo que me sugirio Leonardo para evitar la concurrencia en una 
grabacion de registros de stock hice una prueba que mas abajo adjunto. El tema 
es que me surgio una duda con respecto a los metodos y propiedades estaticas. 
Lo probe en una aplicacion asp.net, utilize un pattern singleton, pido la 
instancia de dos hilos distintos y me fijo si no hay concurrencia. El tema es 
que al cerrar la aplicacion en una maquina y dejarla abierta en otra la 
coleccion que voy cargando con las llamadas queda viva. Mi pregunta es, ¿Cual 
es el ciclo de vida de una coleccion que esta declarada como estatica en una 
clase?.

Muchas gracias

Javier
 
************************************************************************************************************************************************************************************

Partial Class _Default

Inherits System.Web.UI.Page

Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles form1.Load


End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As 
System.EventArgs) Handles Button1.Click

Dim ss As New Class1

ss.correrHilos(Me.TextBox2.Text)

Me.TextBox1.Text = ""

For Each cad As String In mymtec.pattern.Singleton.coleccion

Me.TextBox1.Text = Me.TextBox1.Text & vbCrLf & cad & " "

Next

End Sub

End Class



************************************************************************************************************************************************************************************

Public Class Class1

Public Sub correrHilos(ByVal dondeEstoy As String)

Dim sdd As mymtec.pattern.Singleton = mymtec.pattern.Singleton.GetInstance

Dim tr As New System.Threading.Thread(New Threading.ThreadStart(AddressOf 
sdd.grabar))

tr.Name = dondeEstoy & " ** " & "proceso1"

tr.Start()

Dim ss As New System.Threading.Thread(New 
System.Threading.ThreadStart(AddressOf sdd.grabar))

ss.Name = dondeEstoy & " ** " & "proceso2"

ss.Start()

While tr.ThreadState <> Threading.ThreadState.Stopped Or ss.ThreadState <> 
Threading.ThreadState.Stopped

Dim tito As String = "hola"

End While

End Sub

End Class

*********************************************************************************************************************************************************************************************************************************

Imports System.Threading

Namespace mymtec.pattern

Public Class Singleton

Public Shared coleccion As New Collection

Private Shared _singleton As Singleton

Private Shared _mu As New Mutex()

Private Sub New()

End Sub

Public Shared Function GetInstance() As Singleton

_mu.WaitOne()

Try

If _singleton Is Nothing Then

_singleton = New Singleton()

End If

Finally

_mu.ReleaseMutex()

End Try

Return _singleton

End Function

Public Sub grabar()

_mu.WaitOne()

coleccion.Add(System.Threading.Thread.CurrentThread.Name & " - 1")

Threading.Thread.Sleep(1000)

coleccion.Add(System.Threading.Thread.CurrentThread.Name & " - 2")

_mu.ReleaseMutex()

End Sub

End Class

End Namespace




Responder a