RouteCollection.GetReadLock Método

Definição

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_Start gestor 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 .

Aplica-se a

Ver também