Auf Englisch lesen

Freigeben über


ObjectDisposedException Klasse

Definition

Die Ausnahme, die beim Ausführen einer Operation für ein freigegebenes Objekt ausgelöst wird.

C#
public class ObjectDisposedException : InvalidOperationException
C#
[System.Serializable]
public class ObjectDisposedException : InvalidOperationException
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ObjectDisposedException : InvalidOperationException
Vererbung
ObjectDisposedException
Vererbung
Attribute

Beispiele

Im folgenden Beispiel wird ein Fehler veranschaulicht, der dazu führt, dass die ObjectDisposedException Ausnahme ausgelöst wird.

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

Dieser Code erzeugt die folgende Ausgabe:

Caught:  
  Cannot access a closed Stream.  

Hinweise

Es ObjectDisposedException wird ausgelöst, wenn Sie versuchen, auf ein Element eines Objekts zuzugreifen, das die IDisposable Schnittstelle oder IAsyncDisposable Schnittstelle implementiert, und dieses Objekt wurde verworfen. In der Regel wird diese Ausnahme durch eine der folgenden Bedingungen verursacht:

  • Sie haben die Dispose Methode eines Objekts (oder die Methode eines IDisposableAsync ObjektsDisposeAsync) aufgerufenIDisposable, und Sie versuchen, auf ein Instanzmitglied zuzugreifen, das den Zustand des Objekts abruft oder festlegt. Im folgenden Beispiel wird das ObjectDisposedException ausgelöst, wenn Sie versuchen, die Häufigkeit der Zeitgeberbenachrichtigungen zurückzusetzen, nachdem Sie die Timer.Dispose Methode aufgerufen haben.

    C#
    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()
    
  • Sie haben die Methode eines Objekts Close aufgerufen, und Sie versuchen, auf ein Instanzmitglied zuzugreifen, das den Zustand des Objekts abruft oder festlegt. Häufig stellt die Close Methode die öffentliche Implementierung der IDisposable.Dispose Methode eines Typs bereit. Das gleiche gilt für CloseAsync und <xref:System.IAsyncDisposable.DisposeAsync%2A?displayProperty=nameWithType>.

  • Sie haben die Methoden oder DisposeAsync Methoden eines Objekts Dispose mehrmals aufgerufen. In der Regel löst dies keine Ausnahme aus. Abhängig davon, wie ein Typ implementiert IDisposable.Dispose oder IAsyncDisposable.DisposeAsync, kann es jedoch nicht zulassen, dass mehrere Aufrufe dieser Methode aufgerufen werden.

In den meisten Fällen führt diese Ausnahme zu einem Entwicklerfehler. Statt den Fehler in einem try/catch Block zu behandeln, sollten Sie den Fehler in der Regel korrigieren, indem Sie das Objekt erneut überprüfen.

Konstruktoren

ObjectDisposedException(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der ObjectDisposedException-Klasse mit serialisierten Daten.

ObjectDisposedException(String)

Initialisiert eine neue Instanz der ObjectDisposedException-Klasse mit einer Zeichenfolge, die den Namen des freigegebenen Objekts enthält.

ObjectDisposedException(String, Exception)

Initialisiert eine neue Instanz der ObjectDisposedException-Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme ausgelöst hat.

ObjectDisposedException(String, String)

Initialisiert eine neue Instanz der ObjectDisposedException-Klasse mit dem angegebenen Objektnamen und der Meldung.

Eigenschaften

Data

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zur Ausnahme bereitstellen.

(Geerbt von Exception)
HelpLink

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.

(Geerbt von Exception)
HResult

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.

(Geerbt von Exception)
InnerException

Ruft die Exception-Instanz ab, die die aktuelle Ausnahme verursacht hat.

(Geerbt von Exception)
Message

Ruft die Meldung ab, in der der Fehler beschrieben wird.

ObjectName

Ruft den Namen des freigegebenen Objekts ab.

Source

Gibt den Namen der Anwendung oder des Objekts zurück, die bzw. das den Fehler verursacht hat, oder legt diesen fest.

(Geerbt von Exception)
StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.

(Geerbt von Exception)
TargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.

(Geerbt von Exception)

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetBaseException()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die Grundursache für eine oder mehrere nachfolgende Ausnahmen ist.

(Geerbt von Exception)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetObjectData(SerializationInfo, StreamingContext)

Ruft das SerializationInfo-Objekt mit dem Parameternamen und zusätzlichen Informationen zur Ausnahme ab.

GetObjectData(SerializationInfo, StreamingContext)

Legt beim Überschreiben in einer abgeleiteten Klasse die SerializationInfo mit Informationen über die Ausnahme fest.

(Geerbt von Exception)
GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.

(Geerbt von Exception)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ThrowIf(Boolean, Object)

Löst ein ObjectDisposedException , wenn der angegebene condition Wert ist true.

ThrowIf(Boolean, Type)

Löst ein ObjectDisposedException , wenn der angegebene condition Wert ist true.

ToString()

Erstellt eine Zeichenfolgendarstellung der aktuellen Ausnahme und gibt diese zurück.

(Geerbt von Exception)

Ereignisse

SerializeObjectState
Veraltet.

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt mit serialisierten Daten über die Ausnahme zu erstellen.

(Geerbt von Exception)

Gilt für

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Siehe auch