ObjectDisposedException Classe

Definizione

Eccezione generata eseguendo un'operazione su un oggetto eliminato.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
Ereditarietà
Attributi

Esempi

Nell'esempio seguente viene illustrato un errore che causa ObjectDisposedException la generazione dell'eccezione.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.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
End Class

L'output del codice è il seguente:This code produces the following output:

Caught:  
  Cannot access a closed Stream.  

Commenti

Viene ObjectDisposedException generata un'eccezione quando si tenta di accedere a un membro di un oggetto che IDisposable implementa l'interfaccia e l'oggetto è stato eliminato.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. In genere, questa eccezione è causata da una delle condizioni seguenti:Typically, this exception is caused by one of the following conditions:

  • È stato chiamato il metodo di Dispose un oggetto e si sta tentando di accedere a un membro di istanza che ottiene o imposta lo stato dell'oggetto.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. Nell'esempio seguente viene illustrato l' ObjectDisposedException eccezione generata quando si tenta di reimpostare la frequenza delle notifiche del timer dopo la chiamata Timer.Dispose al metodo.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()
    
  • È stato chiamato il metodo di Close un oggetto e si sta tentando di accedere a un membro di istanza che ottiene o imposta lo stato dell'oggetto.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. Spesso il Close metodo fornisce un'implementazione pubblica IDisposable.Dispose del tipo del metodo.Often, the Close method provides a type's public implementation of the IDisposable.Dispose method.

  • Il metodo di Dispose un oggetto è stato chiamato più volte.You've called an object's Dispose method multiple times. In genere, questa operazione non genera un'eccezione.Typically, this doesn't throw an exception. Tuttavia, a seconda della modalità di implementazione IDisposable.Disposedi un tipo, potrebbe non consentire più chiamate a. DisposeHowever, depending on how a type implements IDisposable.Dispose, it may not allow multiple calls to Dispose.

Nella maggior parte dei casi, questa eccezione viene generata dall'errore dello sviluppatore.In most cases, this exception results from developer error. Anziché gestire l'errore in un blocco try , è necessario correggere l'errore, in genere creando una / catch nuova istanza dell'oggetto.Instead of handling the error in a try/catch block, you should correct the error, typically by reinstantiating the object.

Costruttori

ObjectDisposedException(SerializationInfo, StreamingContext)

Inizializza una nuova istanza della classe ObjectDisposedException con dati serializzati.Initializes a new instance of the ObjectDisposedException class with serialized data.

ObjectDisposedException(String)

Consente di inizializzare una nuova istanza della classe ObjectDisposedException con una stringa contenente il nome dell'oggetto eliminato.Initializes a new instance of the ObjectDisposedException class with a string containing the name of the disposed object.

ObjectDisposedException(String, Exception)

Inizializza una nuova istanza della classe ObjectDisposedException con un messaggio di errore specificato e un riferimento all'eccezione interna che è la causa dell'eccezione corrente.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)

Consente di inizializzare una nuova istanza della classe ObjectDisposedException con il nome dell'oggetto e il messaggio specificati.Initializes a new instance of the ObjectDisposedException class with the specified object name and message.

Proprietà

Data

Ottiene una raccolta di coppie chiave-valore che fornisce informazioni aggiuntive definite dall'utente relative all'eccezione.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Ereditato da Exception)
HelpLink

Ottiene o imposta un collegamento al file della Guida associato all'eccezione.Gets or sets a link to the help file associated with this exception.

(Ereditato da Exception)
HResult

Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato a un'eccezione specifica.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Ereditato da Exception)
InnerException

Ottiene l'istanza di Exception che ha causato l'eccezione corrente.Gets the Exception instance that caused the current exception.

(Ereditato da Exception)
Message

Ottiene il messaggio nel quale è descritto l'errore.Gets the message that describes the error.

ObjectName

Ottiene il nome dell'oggetto eliminato.Gets the name of the disposed object.

Source

Ottiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore.Gets or sets the name of the application or the object that causes the error.

(Ereditato da Exception)
StackTrace

Ottiene una rappresentazione di stringa dei frame immediati nello stack di chiamate.Gets a string representation of the immediate frames on the call stack.

(Ereditato da Exception)
TargetSite

Ottiene il metodo che genera l'eccezione corrente.Gets the method that throws the current exception.

(Ereditato da Exception)

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetBaseException()

Se utilizzato come metodo di override in una classe derivata, restituisce l'Exception che è la causa radice di una o più eccezioni successive.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Ereditato da Exception)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetObjectData(SerializationInfo, StreamingContext)

Consente di recuperare l'oggetto SerializationInfo con il nome del parametro e informazioni aggiuntive sull'eccezione.Retrieves the SerializationInfo object with the parameter name and additional exception information.

GetType()

Ottiene il tipo di runtime dell'istanza corrente.Gets the runtime type of the current instance.

(Ereditato da Exception)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Crea e restituisce una rappresentazione di stringa dell'eccezione corrente.Creates and returns a string representation of the current exception.

(Ereditato da Exception)

Eventi

SerializeObjectState

Si verifica quando un'eccezione viene serializzata per creare un oggetto di stato eccezione contenente i dati serializzati relativi all'eccezione.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Ereditato da Exception)

Si applica a

Vedi anche