Quando tivemos o acesso simultâneo\paralelo, o valor capturado da variável da aplicação foi colhido pelos dois usuários e o valor armazenado foi comprometido. Para isso devemos bloquear o acesso à variável de aplicação e permitir apenas um usuário por vez executar a soma. Nesse caso, pode-se utilizar o seguinte trecho:
try
{
Application.Lock();
lock (this)
{
// Trecho a ser executado que altera uma variável de aplicação ou bloco crítico
}
Application.UnLock();
}
catch
{
Application.UnLock();
}
O Application.Lock() irá bloquear o acesso de outros usuários às variáveis de aplicação e depois o Application.UnLock() libera. O lock (this) permitirá apenas o acesso de um único usuário por vez no trecho de código crítico. A combinação dos dois métodos depende muito do que estiver fazendo. Cada caso tem seu respectivo uso. O simples uso do lock (this) pode resolver... Ele é muito usado para evitar deadlocks. No mais, só isso. Recomendo dar uma lida posteriormente nos artigos abaixo:
- Lock Statment - MSDN
- Problemas no uso de Application.Lock() e Application.UnLock() - MSDN
- Deadlock - Technet
- Apresentando o objeto Application - Marcoratti
0 comentários:
Postar um comentário