RouteCollection.GetReadLock Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece um objeto para gerir a segurança da thread quando recupera um objeto da coleção.
public:
IDisposable ^ GetReadLock();
public IDisposable GetReadLock();
member this.GetReadLock : unit -> IDisposable
Public Function GetReadLock () As IDisposable
Devoluções
Um objeto que gere a segurança da linha.
Exemplos
O exemplo seguinte mostra como usar o GetReadLock método quando recupera uma rota enquanto a aplicação está a correr. A Using instrução garante que, independentemente do que aconteça em tempo de execução quando lê a coleção (quer o código se complete normalmente ou seja lançada uma exceção), o bloqueio será libertado em segurança no final do Using bloco de código.
Observações
O RouteCollection objeto está disponível para múltiplos processos na aplicação. Portanto, se tiver de recuperar uma rota enquanto a aplicação está a correr, use o GetReadLock método para garantir a segurança das threads. Ao obter um bloqueio de leitura na coleção de rotas, garante que a coleção não será modificada enquanto tenta recuperá-la.
O GetReadLock método impede que a thread continue até que o bloqueio possa ser adquirido. Se houver um bloqueio de escrita, a thread espera até que a atualização seja concluída e o bloqueio de escrita seja libertado. O bloqueio de leitura na coleção de rotas é libertado quando o IDisposable objeto devolvido por este método é eliminado.
Se não usar GetReadLock, pode receber um erro enquanto está a ler a RouteCollection coleção. Por exemplo, suponha que percorre os objetos na RouteCollection coleção para os ler, sem chamar GetReadLock. Enquanto fazes isso, outro tópico de outro pedido pode ligar GetWriteLock e adicionar uma rota à coleção. O primeiro fio falha então com um erro.
Existem dois cenários em que não precisa de ligar GetReadLock:
Métodos públicos da RouteCollection turma, como GetVirtualPath e GetRouteData call GetReadLock internamente. Portanto, não é necessário chamar GetReadLock explicitamente quando chama um método público da RouteCollection classe para recuperar dados da coleção.
Quando a aplicação está a iniciar e ainda não está a processar pedidos, como no
Application_Startgestor de eventos, apenas uma thread está a correr. Como não há outros tópicos que possam atualizar a coleção enquanto a está a ler, não precisa de ligar GetReadLockpara .