Compartir vía


RouteCollection.GetReadLock Método

Definición

Proporciona un objeto para administrar la seguridad para subprocesos al recuperar un objeto de la colección.

public:
 IDisposable ^ GetReadLock();
public IDisposable GetReadLock ();
member this.GetReadLock : unit -> IDisposable
Public Function GetReadLock () As IDisposable

Devoluciones

Objeto que administra la seguridad para subprocesos.

Ejemplos

En el ejemplo siguiente se muestra cómo usar el GetReadLock método al recuperar una ruta mientras se ejecuta la aplicación. La Using instrucción garantiza que, independientemente de lo que ocurra en tiempo de ejecución al leer de la colección (si el código se completa normalmente o se produce una excepción), el bloqueo se liberará de forma segura al final del Using bloque de código.

Comentarios

El RouteCollection objeto está disponible para varios procesos de la aplicación. Por lo tanto, si tiene que recuperar una ruta cuando se ejecuta la aplicación, use el método para garantizar la GetReadLock seguridad de los subprocesos. Al obtener un bloqueo de lectura en la colección de rutas, asegúrese de que la colección no se modificará mientras intenta recuperarla.

El GetReadLock método impide que el subproceso continúe hasta que se pueda adquirir el bloqueo. Si hay un bloqueo de escritura, el subproceso espera hasta que se completa la actualización y se libera el bloqueo de escritura. El bloqueo de lectura de la colección de rutas se libera cuando se elimina el IDisposable objeto devuelto por este método.

Si no usa GetReadLock, es posible que reciba un error mientras lee la RouteCollection colección. Por ejemplo, supongamos que recorre en bucle los objetos de la RouteCollection colección para leerlos, sin llamar a GetReadLock. Mientras lo hace, otro subproceso de otra solicitud podría llamar GetWriteLock a y agregar una ruta a la colección. A continuación, se producirá un error en el primer subproceso.

Hay dos escenarios en los que no es necesario llamar GetReadLocka :

  • Métodos públicos de la RouteCollection clase como GetVirtualPath y GetRouteData llaman GetReadLock internamente. Por lo tanto, no es necesario llamar GetReadLock explícitamente al llamar a un método público de la RouteCollection clase para recuperar datos de la colección.

  • Cuando la aplicación se inicia y aún no está procesando solicitudes, como en el Application_Start controlador de eventos, solo se ejecuta un subproceso. Dado que no hay ningún otro subproceso que pueda actualizar la colección mientras lo está leyendo, no es necesario llamar GetReadLocka .

Se aplica a

Consulte también