Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Classe ObjectDisposedException

 

A exceção que é acionada quando uma operação é executada em um objeto descartado.

Namespace:   System
Assembly:  mscorlib (em mscorlib.dll)

System.Object
  System.Exception
    System.SystemException
      System.InvalidOperationException
        System.ObjectDisposedException

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class ObjectDisposedException : InvalidOperationException

NomeDescrição
System_CAPS_protmethodObjectDisposedException(SerializationInfo, StreamingContext)

Inicializa uma nova instância de ObjectDisposedException classe com dados serializados.

System_CAPS_pubmethodObjectDisposedException(String)

Inicializa uma nova instância da classe ObjectDisposedException com uma cadeia de caracteres que contém o nome do objeto descartado.

System_CAPS_pubmethodObjectDisposedException(String, Exception)

Inicializa uma nova instância de ObjectDisposedException classe com uma mensagem de erro especificada e uma referência à exceção interna que é a causa dessa exceção.

System_CAPS_pubmethodObjectDisposedException(String, String)

Inicializa uma nova instância de ObjectDisposedException classe com o nome do objeto especificado e a mensagem.

NomeDescrição
System_CAPS_pubpropertyData

Obtém uma coleção de pares chave/valor que fornecem informações adicionais definidas pelo usuário sobre a exceção. (Herdado de Exception.)

System_CAPS_pubpropertyHelpLink

Obtém ou define um link para o arquivo de ajuda associado a esta exceção.(Herdado de Exception.)

System_CAPS_pubpropertyHResult

Obtém ou define HRESULT, um valor numérico codificado que é atribuído a uma exceção específica.(Herdado de Exception.)

System_CAPS_pubpropertyInnerException

Obtém a instância Exception que causou a exceção atual.(Herdado de Exception.)

System_CAPS_pubpropertyMessage

Obtém a mensagem que descreve o erro.(Substitui o Exception.Message.)

System_CAPS_pubpropertyObjectName

Obtém o nome do objeto descartado.

System_CAPS_pubpropertySource

Obtém ou define o nome do aplicativo ou do objeto que causa o erro. (Herdado de Exception.)

System_CAPS_pubpropertyStackTrace

Obtém uma representação de cadeia de caracteres de quadros imediatos na pilha de chamadas.(Herdado de Exception.)

System_CAPS_pubpropertyTargetSite

Obtém o método que gera a exceção atual.(Herdado de Exception.)

NomeDescrição
System_CAPS_pubmethodEquals(Object)

Verifica se o objeto especificado é igual ao objeto atual. (Herdado de Object.)

System_CAPS_protmethodFinalize()

Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (Herdado de Object.)

System_CAPS_pubmethodGetBaseException()

Quando substituído em uma classe derivada, retorna a Exception que é a causa raiz de uma ou mais exceções subsequentes.(Herdado de Exception.)

System_CAPS_pubmethodGetHashCode()

Serve como a função de hash padrão.(Herdado de Object.)

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

Recupera o SerializationInfo objeto com o nome do parâmetro e informações adicionais de exceção.(Substitui o Exception.GetObjectData(SerializationInfo, StreamingContext).)

System_CAPS_pubmethodGetType()

Obtém o tipo em tempo de execução da instância atual. (Herdado de Exception.)

System_CAPS_protmethodMemberwiseClone()

Cria uma cópia superficial do Object atual.(Herdado de Object.)

System_CAPS_pubmethodToString()

Cria e retorna uma representação da cadeia de caracteres da exceção atual. (Herdado de Exception.)

NomeDescrição
System_CAPS_proteventSerializeObjectState

Ocorre quando uma exceção é serializada para criar um objeto de estado de exceção que contém dados serializados sobre a exceção.(Herdado de Exception.)

Um ObjectDisposedException é gerada quando você tentar acessar um membro de um objeto que implementa o IDisposable interface e esse objeto foi descartado. Normalmente, essa exceção é causada por uma das seguintes condições:

  • Chamado de um objeto Dispose método e você está tentando acessar um membro de instância que obtém ou define o estado do objeto. O exemplo a seguir ilustra o ObjectDisposedException que é gerada quando você tentar redefinir a frequência de notificações do timer depois de chamar o Timer.Dispose método.

    using System;
    using System.Threading;
    
    public class Example
    {
       public static void Main()
       {
          Timer t = new Timer(TimerNotification, null, 
                             100, Timeout.Infinite);
          Thread.Sleep(2000);
          t.Dispose();
    
          t.Change(200, 1000);                   
          Thread.Sleep(3000);
       }
    
       private static void TimerNotification(Object obj)
       {
          Console.WriteLine("Timer event fired at {0:F}", DateTime.Now);
       }
    }
    // The example displays output like the following:
    //    Timer event fired at Monday, July 14, 2014 11:54:08 AM
    //    
    //    Unhandled Exception: System.ObjectDisposedException: Cannot access a disposed object.
    //       at System.Threading.TimerQueueTimer.Change(UInt32 dueTime, UInt32 period)
    //       at Example.Main()
    
  • Chamado de um objeto Close método e você está tentando acessar um membro de instância que obtém ou define o estado do objeto. Geralmente, o Close método fornece a implementação de um tipo público do IDisposable.Dispose método.

  • Chamado de um objeto Dispose método várias vezes. Normalmente, isso não gera uma exceção. No entanto, dependendo de como um tipo implementa IDisposable.Dispose, ele não pode permitir várias chamadas para Dispose.

Na maioria dos casos, essa exceção resulta de erro do desenvolvedor. Em vez de tratamento de erro em uma try/catch bloco, você deve corrigir o erro, normalmente por reinstanciar o objeto.

O exemplo a seguir demonstra um erro que faz com que o ObjectDisposedException exceção seja lançada.

using System;
using System.IO;

public class ObjectDisposedExceptionTest 
{
   public static void Main()
   {     
      MemoryStream ms = new MemoryStream(16);
      ms.Close();
      try 
      {
         ms.ReadByte();
      } 
      catch (ObjectDisposedException e) 
      {
         Console.WriteLine("Caught: {0}", e.Message);
      }
   }
}

Esse código gera a seguinte saída:

Caught:
  Cannot access a closed Stream.

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1

Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Retornar ao início
Mostrar: