ObjectDisposedException Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Die Ausnahme, die ausgelöst wird, wenn ein Vorgang für ein verworfenes Objekt ausgeführt wird.
public ref class ObjectDisposedException : InvalidOperationException
public class ObjectDisposedException : InvalidOperationException
[System.Serializable]
public class ObjectDisposedException : InvalidOperationException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ObjectDisposedException : InvalidOperationException
type ObjectDisposedException = class
inherit InvalidOperationException
[<System.Serializable>]
type ObjectDisposedException = class
inherit InvalidOperationException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ObjectDisposedException = class
inherit InvalidOperationException
Public Class ObjectDisposedException
Inherits InvalidOperationException
- Vererbung
- Vererbung
- Attribute
Beispiele
Im folgenden Beispiel wird ein Fehler veranschaulicht, der bewirkt, dass die ObjectDisposedException Ausnahme ausgelöst wird.
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);
}
}
}
open System
open System.IO
let ms = new MemoryStream 16
ms.Close()
try
ms.ReadByte()
|> ignore
with :? ObjectDisposedException as e ->
printfn $"Caught: {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
Mit diesem Code wird die folgende Ausgabe generiert:
Caught:
Cannot access a closed Stream.
Hinweise
Ein ObjectDisposedException Fehler wird ausgelöst, wenn Sie versuchen, auf ein Element eines Objekts zuzugreifen, das die IDisposable Schnittstelle oder IAsyncDisposable Schnittstelle implementiert, und dieses Objekt wurde gelöscht. In der Regel wird diese Ausnahme durch eine der folgenden Bedingungen verursacht:
Sie haben die Methode eines
IDisposableObjektsDispose(oder die Methode einesIDisposableAsyncObjektsDisposeAsync) aufgerufen, und Sie versuchen, auf ein Instanzelement zuzugreifen, das den Status des Objekts abruft oder festlegt. Im folgenden Beispiel wird veranschaulicht ObjectDisposedException , dass ausgelöst wird, wenn Sie versuchen, die Häufigkeit von Zeitgeberbenachrichtigungen zurückzusetzen, nachdem Sie die Timer.Dispose Methode aufgerufen haben.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()open System open System.Threading let timerNotification _ = printfn $"Timer event fired at {DateTime.Now:F}" let t = new Timer(timerNotification, null, 100, Timeout.Infinite) Thread.Sleep 2000 t.Dispose() t.Change(200, 1000) |> ignore Thread.Sleep 3000 // 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 <StartupCode$fs>.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()Sie haben die Methode eines Objekts
Closeaufgerufen, und Sie versuchen, auf ein Instanzelement zuzugreifen, das den Status des Objekts abruft oder festlegt. Häufig stellt die Methode dieCloseöffentliche Implementierung der IDisposable.Dispose Methode bereit. Das gleiche gilt fürCloseAsyncund<xref:System.IAsyncDisposable.DisposeAsync*?displayProperty=nameWithType>.Sie haben die Methoden oder
DisposeAsyncMethoden eines ObjektsDisposemehrmals aufgerufen. In der Regel löst dies keine Ausnahme aus. Je nachdem, wie ein Typ implementiert IDisposable.Dispose wird oder IAsyncDisposable.DisposeAsyncob mehrere Aufrufe an diese Methode nicht zulässig sind.
In den meisten Fällen führt diese Ausnahme zu einem Entwicklerfehler. Anstatt den Fehler in einem try/catch Block zu behandeln, sollten Sie den Fehler korrigieren, in der Regel durch erneutes Anheften des Objekts.
Konstruktoren
| Name | Beschreibung |
|---|---|
| ObjectDisposedException(SerializationInfo, StreamingContext) |
Veraltet.
Initialisiert eine neue Instanz der ObjectDisposedException Klasse mit serialisierten Daten. |
| ObjectDisposedException(String, Exception) |
Initialisiert eine neue Instanz der ObjectDisposedException Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die die Ursache dieser Ausnahme ist. |
| ObjectDisposedException(String, String) |
Initialisiert eine neue Instanz der ObjectDisposedException Klasse mit dem angegebenen Objektnamen und der angegebenen Nachricht. |
| ObjectDisposedException(String) |
Initialisiert eine neue Instanz der ObjectDisposedException Klasse mit einer Zeichenfolge, die den Namen des verworfenen Objekts enthält. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Data |
Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zur Ausnahme bereitstellen. (Geerbt von Exception) |
| HelpLink |
Dient zum Abrufen oder Festlegen eines Links zur Hilfedatei, die dieser Ausnahme zugeordnet ist. (Geerbt von Exception) |
| HResult |
Dient zum Abrufen oder Festlegen von HRESULT, einem codierten numerischen Wert, der einer bestimmten Ausnahme zugewiesen ist. (Geerbt von Exception) |
| InnerException |
Ruft die Exception Instanz ab, die die aktuelle Ausnahme verursacht hat. (Geerbt von Exception) |
| Message |
Ruft die Meldung ab, die den Fehler beschreibt. |
| ObjectName |
Ruft den Namen des verworfenen Objekts ab. |
| Source |
Dient zum Abrufen oder Festlegen des Namens der Anwendung oder des Objekts, das den Fehler verursacht. (Geerbt von Exception) |
| StackTrace |
Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames im Aufrufstapel ab. (Geerbt von Exception) |
| TargetSite |
Ruft die Methode ab, die die aktuelle Ausnahme auslöst. (Geerbt von Exception) |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetBaseException() |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird die Exception Ursache einer oder mehrerer nachfolgenden Ausnahmen zurückgegeben. (Geerbt von Exception) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Veraltet.
Ruft das SerializationInfo Objekt mit dem Parameternamen und zusätzliche Ausnahmeinformationen ab. |
| GetType() |
Ruft den Laufzeittyp der aktuellen Instanz ab. (Geerbt von Exception) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ThrowIf(Boolean, Object) |
Löst ein ObjectDisposedException , wenn der angegebene Wert ist |
| ThrowIf(Boolean, Type) |
Löst ein ObjectDisposedException , wenn der angegebene Wert ist |
| ToString() |
Erstellt und gibt eine Zeichenfolgendarstellung der aktuellen Ausnahme zurück. (Geerbt von Exception) |
Ereignisse
| Name | Beschreibung |
|---|---|
| SerializeObjectState |
Veraltet.
Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmestatusobjekt zu erstellen, das serialisierte Daten zu der Ausnahme enthält. (Geerbt von Exception) |