Sincronización...

17/03/2005 - 00:54 por Kravek | Informe spam
Como se maneja la concurrencia en VB .Net y en .Net en general?

He buscado algo y he encontrado: Mutex pero esto son recursos del sistema
operativo y la sentencia synclock que requiere UNA CLASE y no una variable.

Mi intención no es hacer una aplicación concurrente (de momento) sino que
estoy diseñando una clase "Arbol" que más adelante podrá ser usada por
programas concurrentes por lo que necesito que cuando hago ciertas
operaciones no se puedan hacer otras (tengo una variable que es el número de
nodos y claro no puedo tocarla desde varios sitios al tiempo y más si como
es mi caso en algunas funciones tengo bucles que si durante su ejecución me
eliminan un nodo podría dar una excepción)

Gracias!!
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
17/03/2005 - 03:34 | Informe spam
SyncLock lo que necesita es una expresion que devuelva un tipo por
referencia que puede ser una variable. Crear una variable de tipo Object a
nivel de clase y usala para la sincronizacion. Algo asi:

Public Class MiClase

Private _lock As New Object
private _contador as integer

Public Sub Sumar()

SyncLock _lock
_contador += 1
End SyncLock

End Sub

Public Sub Restar()

SyncLock _lock
_contador -= 1
End SyncLock

End Sub

End Class

En caso de que te interese, SyncLock es convertido por el compilador a una
llamada a System.Thread.Monitor.Enter (y una llamada al metodo Exit para el
End SyncLock)

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
https://mvp.support.microsoft.com/p...4EF5A4191C

Inteligencia militar son dos términos contradictorios.
Groucho Marx

Preguntas similares