Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase ObjectDisposedException

 

Excepción que se produce cuando se realiza una operación en un objeto desechado.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

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

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

NombreDescripción
System_CAPS_protmethodObjectDisposedException(SerializationInfo, StreamingContext)

Inicializa una nueva instancia de la clase ObjectDisposedException con datos serializados.

System_CAPS_pubmethodObjectDisposedException(String)

Inicializa una nueva instancia de la ObjectDisposedException clase con una cadena que contiene el nombre del objeto desechado.

System_CAPS_pubmethodObjectDisposedException(String, Exception)

Inicializa una nueva instancia de la clase ObjectDisposedException con el mensaje de error especificado y una referencia a la excepción interna que representa la causa de esta excepción.

System_CAPS_pubmethodObjectDisposedException(String, String)

Inicializa una nueva instancia de la ObjectDisposedException clase con el mensaje y el nombre de objeto especificado.

NombreDescripción
System_CAPS_pubpropertyData

Obtiene una colección de pares clave-valor que proporcionan más información definida por el usuario sobre la excepción.(Heredado de Exception).

System_CAPS_pubpropertyHelpLink

Obtiene o establece un vínculo al archivo de ayuda asociado a esta excepción.(Heredado de Exception).

System_CAPS_pubpropertyHResult

Obtiene o establece HRESULT, un valor numérico codificado que se asigna a una excepción específica.(Heredado de Exception).

System_CAPS_pubpropertyInnerException

Obtiene la instancia Exception que produjo la excepción actual.(Heredado de Exception).

System_CAPS_pubpropertyMessage

Obtiene el mensaje que describe el error.(Invalida Exception.Message).

System_CAPS_pubpropertyObjectName

Obtiene el nombre del objeto desechado.

System_CAPS_pubpropertySource

Devuelve o establece el nombre de la aplicación o del objeto que generó el error.(Heredado de Exception).

System_CAPS_pubpropertyStackTrace

Obtiene una representación de cadena de los marcos inmediatos en la pila de llamadas.(Heredado de Exception).

System_CAPS_pubpropertyTargetSite

Obtiene el método que produjo la excepción actual.(Heredado de Exception).

NombreDescripción
System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodGetBaseException()

Cuando se invalida en una clase derivada, devuelve la clase Exception que representa la causa principal de una o más excepciones posteriores.(Heredado de Exception).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

Recupera el SerializationInfo objeto con el nombre del parámetro y la información adicional de la excepción.(Invalida Exception.GetObjectData(SerializationInfo, StreamingContext)).

System_CAPS_pubmethodGetType()

Obtiene el tipo en tiempo de ejecución de la instancia actual.(Heredado de Exception).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethodToString()

Crea y devuelve una representación de cadena de la excepción actual.(Heredado de Exception).

NombreDescripción
System_CAPS_proteventSerializeObjectState

Ocurre cuando una excepción se serializa para crear un objeto de estado de excepción que contenga datos serializados sobre la excepción.(Heredado de Exception).

Una ObjectDisposedException se produce cuando se intenta tener acceso a un miembro de un objeto que implementa el IDisposable interfaz y ese objeto se ha eliminado. Normalmente, esta excepción se produjo por una de las siguientes condiciones:

  • Se ha llamado a un objeto Dispose método y está intentando obtener acceso a un miembro de instancia que obtiene o establece el estado del objeto. En el ejemplo siguiente se muestra el ObjectDisposedException que se produce al intentar restablecer la frecuencia de las notificaciones de temporizador después de llamar a la 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()
    
  • Se ha llamado a un objeto Close método y está intentando obtener acceso a un miembro de instancia que obtiene o establece el estado del objeto. A menudo, el Close método proporciona una implementación pública de un tipo de la IDisposable.Dispose (método).

  • Se ha llamado a un objeto Dispose método varias veces. Normalmente, esto no inicia una excepción. Sin embargo, dependiendo de cómo se implementa un tipo IDisposable.Dispose, no puede permitir que varias llamadas a Dispose.

En la mayoría de los casos, esta excepción se produce de error de desarrollador. En lugar de controlar el error en un try/catch bloque, debe corregir el error, normalmente reinstantiating el objeto.

En el ejemplo siguiente se muestra un error que provoca la ObjectDisposedException excepción.

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);
      }
   }
}

Este código genera el siguiente resultado:

Caught:
  Cannot access a closed Stream.

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: