ObjectDisposedException ObjectDisposedException ObjectDisposedException ObjectDisposedException Class

Definição

A exceção que é gerada quando uma operação é executada em um objeto descartado.The exception that is thrown when an operation is performed on a disposed object.

public ref class ObjectDisposedException : InvalidOperationException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class ObjectDisposedException : InvalidOperationException
type ObjectDisposedException = class
    inherit InvalidOperationException
Public Class ObjectDisposedException
Inherits InvalidOperationException
Herança
Atributos

Exemplos

O exemplo a seguir demonstra um erro que faz com que o ObjectDisposedException exceção seja lançada.The following example demonstrates an error that causes the ObjectDisposedException exception to be thrown.

using namespace System;
using namespace System::IO;
int main()
{
   MemoryStream^ ms = gcnew MemoryStream( 16 );
   ms->Close();
   try
   {
      ms->ReadByte();
   }
   catch ( ObjectDisposedException^ e ) 
   {
      Console::WriteLine( "Caught: {0}", e->Message );
   }

}

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);
      }
   }
}
Imports System
Imports System.IO

Public Class ObjectDisposedExceptionTest
   
   Public Shared Sub Main()
      Dim ms As New MemoryStream(16)
      ms.Close()
      Try
         ms.ReadByte()
      Catch e As ObjectDisposedException
         Console.WriteLine("Caught: {0}", e.Message)
      End Try
   End Sub 'Main
End Class 'ObjectDisposedExceptionTest

Esse código gera a seguinte saída:This code produces the following output:

Caught:  
  Cannot access a closed Stream.  

Comentários

Uma ObjectDisposedException é gerada quando você tenta acessar um membro de um objeto que implementa o IDisposable interface e esse objeto foi descartado.An ObjectDisposedException is thrown when you try to access a member of an object that implements the IDisposable interface, and that object has been disposed. Normalmente, essa exceção é causada por uma das seguintes condições:Typically, this exception is caused by one of the following conditions:

  • Chamei um objeto Dispose método e você está tentando acessar um membro de instância que obtém ou define o estado do objeto.You've called an object's Dispose method, and you're trying to access an instance member that gets or sets the object's state. O exemplo a seguir ilustra a ObjectDisposedException que é gerada quando você tenta redefinir a frequência das notificações de temporizador depois de chamar o Timer.Dispose método.The following example illustrates the ObjectDisposedException that is thrown when you try to reset the frequency of timer notifications after you call the Timer.Dispose method.

    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()
    
    Imports System.Threading
    
    Module Example
       Public Sub Main()
          Dim t As New Timer(AddressOf TimerNotification, Nothing, 
                             100, Timeout.Infinite)
          Thread.Sleep(2000)
          t.Dispose()
          
          t.Change(200, 1000)                   
          Thread.Sleep(3000)
       End Sub
    
       Private Sub TimerNotification(obj As Object)
          Console.WriteLine("Timer event fired at {0:F}", Date.Now)
       End Sub
    End Module
    ' 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()
    
  • Chamei um objeto Close método e você está tentando acessar um membro de instância que obtém ou define o estado do objeto.You've called an object's Close method, and you're trying to access an instance member that gets or sets the object's state. Muitas vezes, o Close método fornece a implementação de um tipo público do IDisposable.Dispose método.Often, the Close method provides a type's public implementation of the IDisposable.Dispose method.

  • Chamei um objeto Dispose método várias vezes.You've called an object's Dispose method multiple times. Normalmente, isso não lança uma exceção.Typically, this doesn't throw an exception. No entanto, dependendo de como um tipo implementa IDisposable.Dispose, ele pode não permitir várias chamadas para Dispose.However, depending on how a type implements IDisposable.Dispose, it may not allow multiple calls to Dispose.

Na maioria dos casos, essa exceção resulta de erro de desenvolvedor.In most cases, this exception results from developer error. Em vez de manipular o erro em uma try / catch bloco, você deve corrigir o erro, normalmente por reinstanciar o objeto.Instead of handling the error in a try/catch block, you should correct the error, typically by reinstantiating the object.

Construtores

ObjectDisposedException(SerializationInfo, StreamingContext) ObjectDisposedException(SerializationInfo, StreamingContext) ObjectDisposedException(SerializationInfo, StreamingContext) ObjectDisposedException(SerializationInfo, StreamingContext)

Inicializa uma nova instância da classe ObjectDisposedException com dados serializados.Initializes a new instance of the ObjectDisposedException class with serialized data.

ObjectDisposedException(String) ObjectDisposedException(String) ObjectDisposedException(String) ObjectDisposedException(String)

Inicializa uma nova instância da classe ObjectDisposedException com uma cadeia de caracteres que contém o nome do objeto descartado.Initializes a new instance of the ObjectDisposedException class with a string containing the name of the disposed object.

ObjectDisposedException(String, Exception) ObjectDisposedException(String, Exception) ObjectDisposedException(String, Exception) ObjectDisposedException(String, Exception)

Inicializa uma nova instância da classe ObjectDisposedException com uma mensagem de erro especificada e uma referência à exceção interna que é a causa da exceção.Initializes a new instance of the ObjectDisposedException class with a specified error message and a reference to the inner exception that is the cause of this exception.

ObjectDisposedException(String, String) ObjectDisposedException(String, String) ObjectDisposedException(String, String) ObjectDisposedException(String, String)

Inicializa uma nova instância da classe ObjectDisposedException com o nome do objeto e a mensagem especificados.Initializes a new instance of the ObjectDisposedException class with the specified object name and message.

Propriedades

Data Data Data Data

Obtém uma coleção de pares de chave/valor que fornecem informações adicionais definidas pelo usuário sobre a exceção.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Inherited from Exception)
HelpLink HelpLink HelpLink HelpLink

Obtém ou define um link para o arquivo de ajuda associado a essa exceção.Gets or sets a link to the help file associated with this exception.

(Inherited from Exception)
HResult HResult HResult HResult

Obtém ou define HRESULT, um valor numérico codificado que é atribuído a uma exceção específica.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Inherited from Exception)
InnerException InnerException InnerException InnerException

Obtém a instância Exception que causou a exceção atual.Gets the Exception instance that caused the current exception.

(Inherited from Exception)
Message Message Message Message

Obtém a mensagem que descreve o erro.Gets the message that describes the error.

ObjectName ObjectName ObjectName ObjectName

Obtém o nome do objeto descartado.Gets the name of the disposed object.

Source Source Source Source

Obtém ou define o nome do aplicativo ou objeto que causa o erro.Gets or sets the name of the application or the object that causes the error.

(Inherited from Exception)
StackTrace StackTrace StackTrace StackTrace

Obtém uma representação de cadeia de caracteres de quadros imediatos na pilha de chamadas.Gets a string representation of the immediate frames on the call stack.

(Inherited from Exception)
TargetSite TargetSite TargetSite TargetSite

Obtém o método que gerou a exceção atual.Gets the method that throws the current exception.

(Inherited from Exception)

Métodos

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetBaseException() GetBaseException() GetBaseException() GetBaseException()

Quando substituído em uma classe derivada, retorna a Exception que é a causa raiz de uma ou mais exceções subsequentes.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Inherited from Exception)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Inherited from Object)
GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext) GetObjectData(SerializationInfo, StreamingContext)

Recupera o objeto SerializationInfo com o nome do parâmetro e informações adicionais de exceção.Retrieves the SerializationInfo object with the parameter name and additional exception information.

GetType() GetType() GetType() GetType()

Obtém o tipo de tempo de execução da instância atual.Gets the runtime type of the current instance.

(Inherited from Exception)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Cria e retorna uma representação de cadeia de caracteres da exceção atual.Creates and returns a string representation of the current exception.

(Inherited from Exception)

Eventos

SerializeObjectState SerializeObjectState SerializeObjectState SerializeObjectState

Ocorre quando uma exceção é serializada para criar um objeto de estado de exceção que contém dados serializados sobre a exceção.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Inherited from Exception)

Aplica-se a

Veja também