CORRECÇÃO: System.ArgumentOutOfRangeException ocorre intermitentemente com o ADO.NET

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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 836874
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.
Sintomas
Em um aplicativo ADO.NET, intermitentemente poderá receber a seguinte mensagem de erro exceção:
System.ArgumentOutOfRangeException: O índice estava fora do intervalo. Deve ser não-negativo e menor que o tamanho da coleção. Nome do parâmetro: índice
Causa
Você recebe essa mensagem de erro se você cria ou destruir objetos relacionados ao DataSet (como um objeto DataView ) em um manipulador de eventos para um objeto DataSet , ou em um objeto que está associado a um objeto DataSet . Por exemplo, este erro foi reproduzido em um aplicativo que continha um controle de grade que estava criando objetos de DataView filho em um manipulador de eventos ListChanged para a grade. Isso permite que estado interno do objeto DataSet subjacente para alterar durante uma operação de onde devem permanecer estática.
Resolução
Um hotfix suportado agora está disponível da Microsoft, mas destina-se somente a corrigir o problema descrito neste artigo. Aplique-o somente nos sistemas que apresentarem esse problema específico. Esta correcção poderá submetida a testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, recomendamos que você aguarde o próximo service pack que contém esse hotfix.

Para resolver esse problema imediatamente, contate o Atendimento Microsoft para obter o hotfix. Para obter uma lista completa de telefones do Atendimento Microsoft e informações sobre os custos de suporte da, visite o seguinte site: Observação Em alguns casos, as taxas cobradas pelas ligações para chamadas de suporte podem ser canceladas se um profissional de suporte da Microsoft determinar que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados a questões e problemas que não se qualificam à atualização específica em questão de suporte adicionais.A versão em inglês deste hotfix apresenta os atributos de arquivo (ou posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na acordo hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.
   Date         Time   Version            Size    File name   --------------------------------------------------------------   02-Mar-2004  18:39  1.1.4322.1007   1,294,336  System.data.dll                                             
Como Contornar
Não criar ou destruir objetos relacionados ao DataSet (como um objeto DataView ) dentro de um manipulador de eventos para um objeto DataSet .
Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft que estão listados na seção "Aplica-se a" deste artigo.
A pilha de chamadas para essa exceção depende da funcionalidade do seu aplicativo e a causa exata do erro. A seguir estão dois exemplos que ocorreram quando filho DataView objetos são criados no manipulador de eventos ListChanged para um controle:

Pilha de chamadas de exemplo 1

System.Collections.ArrayList.get_Item(Int32 index)Sstem.Data.DataTable.RecordStateChanged(Int32 record1, DataViewRowState oldState1, DataViewRowState newState1, Int32 record2, DataViewRowState oldState2, DataViewRowState newState2)System.Data.DataTable.SetNewRecord(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge)System.Data.DataRow.EndEdit()System.Data.DataRow.set_Item(DataColumn column, Object value)System.Data.DataRow.set_Item(String columnName, Object value)

Pilha de chamadas de exemplo 2

System.Collections.ArrayList.get_Item(Int32 index)System.Data.DataTable.ResetIndexes()System.Data.Merger.MergeTable(DataTable src, DataTable dst)System.Data.Merger.MergeTableData(DataTable src)System.Data.Merger.MergeDataSet(DataSet source)System.Data.DataSet.Merge(DataSet dataSet, Boolean preserveChanges, MissingSchemaAction missingSchemaAction)

Observação Esses são apenas exemplos e não são apenas pilhas de chamadas que podem ocorrer com este erro.
Referências
Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684Descrição da terminologia padrão que é usada para descrever as atualizações de software
Para obter informações adicionais sobre uma exceção similar que ocorre com uma versão anterior do ADO.NET, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
332215CORRECÇÃO: "System.ArgumentOutOfRangeException: o índice estava fora do intervalo" erro ocorre com SqlClient.SqlConnection.Open()
Observação A correção para o artigo 332215 já está incluída no .NET Framework versão 1.1.
sqlclient IndexOutOfRangeException

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 836874 - Última Revisão: 06/01/2006 09:24:01 - Revisão: 2.1

Microsoft ADO.NET 1.1

  • kbmt kbhotfixserver kbqfe KB836874 KbMtpt
Comentários