Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe ObjectDisposedException

 

Data di pubblicazione: ottobre 2016

Eccezione generata durante l'esecuzione di un'operazione su un oggetto eliminato.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

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

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

NomeDescrizione
System_CAPS_protmethodObjectDisposedException(SerializationInfo, StreamingContext)

Inizializza una nuova istanza della classe ObjectDisposedException con dati serializzati.

System_CAPS_pubmethodObjectDisposedException(String)

Inizializza una nuova istanza di ObjectDisposedException classe con una stringa contenente il nome dell'oggetto eliminato.

System_CAPS_pubmethodObjectDisposedException(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.

System_CAPS_pubmethodObjectDisposedException(String, String)

Inizializza una nuova istanza di ObjectDisposedException classe con il nome dell'oggetto specificato e il messaggio.

NomeDescrizione
System_CAPS_pubpropertyData

Ottiene una raccolta di coppie chiave-valore che fornisce informazioni aggiuntive definite dall'utente relative all'eccezione.(Ereditato da Exception.)

System_CAPS_pubpropertyHelpLink

Ottiene o imposta un collegamento al file della Guida associato all'eccezione.(Ereditato da Exception.)

System_CAPS_pubpropertyHResult

Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato a un'eccezione specifica.(Ereditato da Exception.)

System_CAPS_pubpropertyInnerException

Ottiene l'istanza di Exception che ha causato l'eccezione corrente.(Ereditato da Exception.)

System_CAPS_pubpropertyMessage

Ottiene il messaggio nel quale è descritto l'errore.(Esegue l'override di Exception.Message.)

System_CAPS_pubpropertyObjectName

Ottiene il nome dell'oggetto eliminato.

System_CAPS_pubpropertySource

Ottiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore.(Ereditato da Exception.)

System_CAPS_pubpropertyStackTrace

Ottiene una rappresentazione di stringa dei frame immediati nello stack di chiamate.(Ereditato da Exception.)

System_CAPS_pubpropertyTargetSite

Ottiene il metodo che genera l'eccezione corrente.(Ereditato da Exception.)

NomeDescrizione
System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.(Ereditato da Object.)

System_CAPS_protmethodFinalize()

Consente a un oggetto di effettuare un tentativo di liberare risorse ed eseguire altre operazioni di pulizia prima che venga recuperato da Garbage Collection.(Ereditato da Object.)

System_CAPS_pubmethodGetBaseException()

Quando ne viene eseguito l'override in una classe derivata, restituisce l'Exception che è la causa radice di una o più eccezioni successive.(Ereditato da Exception.)

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

Recupera il SerializationInfo oggetto con il nome del parametro e informazioni aggiuntive sull'eccezione.(Esegue l'override di Exception.GetObjectData(SerializationInfo, StreamingContext).)

System_CAPS_pubmethodGetType()

Ottiene il tipo di runtime dell'istanza corrente.(Ereditato da Exception.)

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.(Ereditato da Object.)

System_CAPS_pubmethodToString()

Crea e restituisce una rappresentazione di stringa dell'eccezione corrente.(Ereditato da Exception.)

NomeDescrizione
System_CAPS_proteventSerializeObjectState

Si verifica quando un'eccezione viene serializzata per creare un oggetto di stato eccezione contenente i dati serializzati relativi all'eccezione.(Ereditato da Exception.)

Un ObjectDisposedException viene generata quando si tenta di accedere a un membro di un oggetto che implementa il IDisposable interfaccia e tale oggetto è stato eliminato. In genere, questa eccezione è causata da una delle condizioni seguenti:

  • È stato chiamato un oggetto Dispose metodo e si sta tentando di accedere a un membro di istanza che ottiene o imposta lo stato dell'oggetto. Nell'esempio seguente viene illustrato il ObjectDisposedException che viene generata quando si tenta di reimpostare la frequenza delle notifiche di timer dopo la chiamata di Timer.Dispose metodo.

    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()
    
  • È stato chiamato un oggetto Close metodo e si sta tentando di accedere a un membro di istanza che ottiene o imposta lo stato dell'oggetto. Spesso, il Close metodo fornisce l'implementazione pubblica di un tipo del IDisposable.Dispose metodo.

  • È stato chiamato un oggetto Dispose metodo più volte. In genere, questo non genera un'eccezione. Tuttavia, a seconda di come un tipo implementa IDisposable.Dispose, potrebbe non consentire più chiamate a Dispose.

Nella maggior parte dei casi, questa eccezione risultante dall'errore developer. Invece di gestione dell'errore in un try/catch blocco, è necessario correggere l'errore, in genere per creare una nuova istanza dell'oggetto.

Nell'esempio seguente viene mostrato un errore che causa il ObjectDisposedException eccezione.

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

L'output del codice è il seguente:

Caught:
  Cannot access a closed Stream.

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: