Postagens

Mostrando postagens de agosto, 2008

Como informações dentro do CallContext são passadas entre threads?

Estes dias tenho feito testes para uma prova de conceito de uma infra que estou desenvolvendo, para instrumentar chamadas de métodos. Nela, a idéia é ir armazenando informações do contexto da chamada (parâmetros, tempo de chamada, usuário, máquina, etc), para se ter a rastreabilidade do que ocorre na execução dos sistemas. Cheguei na conclusão que o uso da classe CallContext é uma boa para manter essas informações, pois o que é armazenado nela é trafegado entre threads e appdomains, durante o contexto da execução (lembrando que os objetos nela armazenados devem implementar ILogicalThreadAffinative , para que funcione como desejado). Uma dúvida tinha ficado no ar... Como são mantidas as informações quando o contexto da execução passa para outras threads, por exemplo, via ThreadPool? A resposta está na classe ExecutionContext . Cada thread possui uma instância desse objeto associada, e é nessa instância que são armazenadas informações como contexto de segurança e sincronização. E ta