lock y clases estaticas

05/10/2006 - 10:19 por José Mª Toro Bermejo | Informe spam
Buenos días a todos.
Tengo una clase estática en la que tengo 2 funciones que utilizan la
instrucción lock de la siguiente manera:
lock(nombre_clase)
{
}
pero me salta el siguiente error "nombre_clase es tipo pero se utiliza como
una variable"
Si lo utilizo en clases no estáticas utilizo this pero en el caso que
necesito no lo puedo utilizar.
¿Alguna solución?

Recibe un cordial saludo,
José Mª Toro Bermejo
josemari290@gmail.com

Preguntas similare

Leer las respuestas

#1 floyd303
05/10/2006 - 10:51 | Informe spam
Hola!

Es que el lock se utiliza para bloquear el uso de una variable en un
entorno multiproceso. Me explico, si dos procesos utilizan una misma
variable, lock te evita conflictos al ser accedido por ambos a la vez.

Defines una variable estatica global, por ejemplo:

public class CClase
{
protected static int _iVal;

public static void ModificarValor (int iNuevoValor)
{
lock(_iVal)
{
_iVal = iNuevoValor;
}
}
}

Es un ejemplo muy simple, pero que espero ilustre lo que estoy
explicando. Si tienes dos procesos funcionando a la vez y que llaman a
la funcion ModificarValor, el primero que llegue bloqueara su uso hasta
que termine y el segundo tendra que esperar a que el primero termine.

Tienes una explicacion mejor en:
http://www.clikear.com/manuales/csharp/c141.asp
y en:
http://msdn2.microsoft.com/en-us/li...ehkcz.aspx

Veras que lo que se bloquea es un objeto y no un tipo.

Saludos
Roberto M. Oliva


José Mª Toro Bermejo ha escrito:

Buenos días a todos.
Tengo una clase estática en la que tengo 2 funciones que utilizan la
instrucción lock de la siguiente manera:
lock(nombre_clase)
{
}
pero me salta el siguiente error "nombre_clase es tipo pero se utiliza como
una variable"
Si lo utilizo en clases no estáticas utilizo this pero en el caso que
necesito no lo puedo utilizar.
¿Alguna solución?

Recibe un cordial saludo,
José Mª Toro Bermejo

Respuesta Responder a este mensaje
#2 Octavio Hernandez
05/10/2006 - 12:05 | Informe spam
Jose Mª,

Mira este enlace que te adjunto, puede que tengas algún manual antiguo de
.NET en los que se recomendaba utilizar para el lock el objeto Type
correspondiente a la clase (llamando a GetType). Luego se comprobó que esa
técnica no era idónea y que lo mejor era definir una variable estática y
usarla para el bloqueo, como se hace en el ejemplo que te ha dado Roberto -
aunque yo personalmente prefiero usar un string, que es un tipo referencia,
y no int.

http://msdn.microsoft.com/library/d...032003.asp

Slds - Octavio


"José Mª Toro Bermejo" escribió en el mensaje
news:
Buenos días a todos.
Tengo una clase estática en la que tengo 2 funciones que utilizan la
instrucción lock de la siguiente manera:
lock(nombre_clase)
{
}
pero me salta el siguiente error "nombre_clase es tipo pero se utiliza
como una variable"
Si lo utilizo en clases no estáticas utilizo this pero en el caso que
necesito no lo puedo utilizar.
¿Alguna solución?

Recibe un cordial saludo,
José Mª Toro Bermejo



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida