Foros del Web » Programación para mayores de 30 ;) » .NET »

C# lock multihilo

Estas en el tema de C# lock multihilo en el foro de .NET en Foros del Web. amigos: tengo una duda sobre el lock.. Cuando dos usuarios entran a grabar al mismo tiempo, pero uno de los usuarios grabar un codigocliente y ...
  #1 (permalink)  
Antiguo 12/12/2011, 20:47
 
Fecha de Ingreso: agosto-2007
Mensajes: 4
Antigüedad: 16 años, 8 meses
Puntos: 0
C# lock multihilo

amigos:
tengo una duda sobre el lock..
Cuando dos usuarios entran a grabar al mismo tiempo, pero uno de los usuarios grabar un codigocliente y otro usuario, otro codigo cliente...el usuario que entra primero, bloquea al segundo? considerando que estan grabando datos diferentes?
o los dos pueden grabar al mismo tiempo sin bloquearse?

tengo el siguiente codigo:

public void GrabarCliente(int codigocliente)
{
private static object createLock = new object():

if (contexto.Clientes.Any(u => u.CodigoCliente == codigocliente)
{
lock(createLock)
{
if (contexto.Clientes.Any(u => u.CodigoCliente == codigocliente)
{
contexto.SaveChanges();
}

}
}
}


}


}
  #2 (permalink)  
Antiguo 13/12/2011, 03:56
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: C# lock multihilo

Lo primero, no se puede crear una variable private dentro de un método.

No sé si es un error u otra cosa.

Sobre tu pregunta, suponiendo que la variable que usas es una variable de clase (static), sólo va a poder entrar de uno en uno al bloqueo, porque es una variable compartida por todas las instancias de la clase.
  #3 (permalink)  
Antiguo 13/12/2011, 14:15
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: C# lock multihilo

Hola que tal, bueno que yo sepa con los INSERT no hay problemas de bloqueo, osea que el usuario 1 puede grabar a X persona y el 2 a Y.

El problema es cuando usas transacciones ( BEGIN TRANSACTION en SQL ), con eso si hay problema, por que bloquea el server hasta que termine de hacer sus operaciones y luego entra el segundo usuario a grabar.

El uso de la transaccion, te lo recomiendo para el UPDATE o DELETE nada mas .

Como siempre e dicho, el mejor modo para hacer grabados es el uso de los SP, se me hace que controlas todo mejor, que desde visual, pero es de gustos.

Un saludo

Etiquetas: lock
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:16.