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
 

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

Preguntas similares