Select the product you need help with
Aplicações do ASP.NET resolução de problemas com a utilização de palavras-chave estáticasArtigo: 893666 - Ver produtos para os quais este artigo se aplica. Coluna de voz de suporte do ASP.NETAplicações do ASP.NET resolução de problemas com a utilização de palavras-chave estáticaspara personalizar esta coluna às suas necessidades, pretendemos convidá-lo para submeter as suas ideias sobre tópicos que lhe interessam e problemas que pretende ver endereçados artigos de base de dados de conhecimento no futuro e colunas de voz de suporte. Pode submeter as ideias e comentários utilizando o formulário Ask For It
(http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=)
. Também há uma hiperligação para o formulário na parte inferior desta coluna. Nesta páginaBem-vindo à coluna voz de suporte do Microsoft ASP.NET! Meu nome estiver Jerry Orman. Foram com a Microsoft 5 anos e ter gasto a maior parte do meu tempo relacionada com a Web tecnologias como o Microsoft FrontPage e novas tecnologias Microsoft SharePoint. Ter gasto o ano passado a trabalhar com o Microsoft ASP.NET como um engenheiro de suporte. Este mês na coluna voz de suporte, a vai descrever aplicações do ASP.NET resolução de problemas com a utilização de palavras-chave estáticas. StaticsEste artigo descreve dois comportamentos diferentes que são causadas por palavras-chave estáticas e que pode ser difícil resolver. Deve depois de ler este artigo, pode evitar estes comportamentos nas suas aplicações e conseguir melhor diagnosticá-los se ocorrerem.Os utilizadores vêem dados incorrectosUm sintoma a que é muito difícil resolver ocorre quando um utilizador submete dados, mas informações outro utilizador são apresentadas ou existe numa base de dados. Isto normalmente acontece devido a utilização incorrecta de variáveis estáticas em classes. Um objecto estático é instanciada uma vez para cada domínio de aplicação e todo o processamento da aplicação partilha o mesmo objecto. Por exemplo, vamos supor que configurar uma propriedade estática numa classe utilizando o seguinte código.BadClass.MyData Até agora imagine que tem uma página que define o valor do MyData e, em seguida, efectua algumas trabalhar com ele. Se vários utilizadores de visitas a página ao mesmo tempo, tem agora uma condição de corrida em que o último utilizador que actualizado MyData wins. O seguinte exemplo mostra este comportamento, definindo o objecto estático durante um evento button_click . Este exemplo também torna a suspensão de thread durante 15 segundos. Isto permite que os pedidos para a mesma altura. Para o fazer, siga estes passos:
Evitar este comportamentoA melhor forma para evitar este comportamento é para não fazer com que o objecto estático e utilizar uma instância da classe para definir e obter os valores. A propriedade já não é partilhada, uma vez que é criada uma cópia do objecto para cada pedido e não verá este comportamento. Para evitar este comportamento, siga estes passos:
NullReferenceException causado por staticsOutro comportamento que ocorre quando utiliza statics é uma excepção System.NullReferenceException. Por exemplo, alterar o código de evento button_click para o seguinte.Fuga de memória devida a eventos estáticosSe configurar um evento estático e subscrever esse evento a partir de uma página .aspx, o processo será executado eventualmente memória esgotada. Vamos considerar adicione o seguinte o BadClass.cs ficheiroPorque é que isto faz com que uma fuga de memóriaUma vez que o evento é estático e nunca sai do âmbito, estará a adicionar o método à lista de eventos que são desencadeado quando o evento ocorre sempre que a página é executada. O resultado final desta situação é que raiz de qualquer objecto que ligue ao evento estático na memória e nunca serão recolhido. Neste caso, esse objecto é a classe de página .aspx real.Este comportamento ocorre no depurador Windbg.exe ou o depurador cdb.exe executando o ! gcroot comandos no objecto que está a adicionar o evento de. Verá saída semelhante ao seguinte. Para obter mais informações sobre o recolector de lixo do Microsoft .NET, visite os seguintes Web sites da MSDN: http://msdn.microsoft.com/msdnmag/issues/1100/GCI/default.aspx
(http://msdn.microsoft.com/msdnmag/issues/1100/GCI/default.aspx)
http://msdn.microsoft.com/msdnmag/issues/1200/GCI2/default.aspx Para obter mais informações sobre o ! gcroot comando e obter este resultado, consulte a secção "Contadores de memória do .NET CLR" do seguinte Web site da MSDN:
(http://msdn.microsoft.com/msdnmag/issues/1200/GCI2/default.aspx)
http://msdn2.microsoft.com/en-us/library/ms972959.aspx
(http://msdn2.microsoft.com/en-us/library/ms972959.aspx)
Evitar este comportamentoPara evitar este comportamento, pode não utilizar a palavra-chave estática no evento ou remover o processador de eventos da página quando tiver terminado a utilizá-lo. Um exemplo de ASP.NET, ligue o evento quando é chamado Page_Init . É necessário removê-la quando carrega a página adicionando um processador de eventos para o evento Page_Unload .Adicione o seguinte método InitializeComponents . http://msdn2.microsoft.com/en-us/library/aa645739(vs.71).aspx
(http://msdn2.microsoft.com/en-us/library/aa645739(vs.71).aspx)
Como sempre, vontade submeter ideias tópicos que pretende no futuro corrigida colunas ou na base de dados de conhecimento utilizando o formulário Ask For It
(http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=)
.PropriedadesArtigo: 893666 - Última revisão: terça-feira, 27 de Março de 2007 - Revisão: 1.4
Tradução automática IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 893666
(http://support.microsoft.com/kb/893666/en-us/
)
|




Voltar ao topo








