RouteCollection.GetReadLock Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 .