Pergunta

Eu tenho um aplicativo VB.NET, onde vários objetos vão acessar algum código comum, e eu tenho alguns contadores e valores comuns entre todas as chamadas, assim que eu estou usando atualmente uma "classe compartilhada" (Estou ciente classes não podem ser compartilhados, per se, mas todas as variáveis ??e os métodos são marcados como "Shared").

A minha preocupação é com a visibilidade desse objeto - se um usuário executa duas instâncias do aplicativo na mesma área de trabalho, eles vão usar o mesmo "instância" da classe compartilhada? Em outras palavras, será que as duas cópias do aplicativo tanto incrementar os mesmos contadores e usar as mesmas variáveis?

Além disso, o que acontece com dois espaços de usuários na mesma máquina - se cada usuário executa uma cópia, terá essas duas cópias interferir

?

Talvez eu estou bastardizing o conceito "compartilhada" e não há uma maneira melhor coisa para fazer isso (eu sei que algumas pessoas não código compartilhado através de módulos em vez de classes). Existe um método melhor de ter objetos (ambas as variáveis ??e métodos) compartilhados em toda a aplicação, mas separadas de outras instâncias do aplicativo?

UPDATE: Em resposta à pergunta sobre o meu caminho "preferido", o aplicativo que estou escrevendo necessidades manter os dados privados, mesmo entre diferentes instâncias que o usuário está em execução. Nesse caso, eu não quero compartilhar todos os dados em tudo entre várias instâncias, que é por isso que estou preocupado com os efeitos colaterais do uso de uma classe partilhada ou um módulo. Obrigado pela pergunta.

Foi útil?

Solução

Cada instância do seu aplicativo, seja administrado por um único usuário ou múltipla, verá a sua própria cópia de campos compartilhados.

Este blog entra em mais detalhes , descrevendo casos estáticos / campos compartilhados são escopo para itens como tópicos em vez de contexto padrão, um AppDomain.

Outras dicas

Os valores compartilhados (ou estático se você é um C # er) são apenas comum ao domínio App.

É ainda possível carregar vários domínios App no ??mesmo processo e cada um terá seu próprio conjunto de valores compartilhados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top