ObjectDisposedException Klas

Definitie

De uitzondering die wordt gegenereerd wanneer een bewerking wordt uitgevoerd op een verwijderd object.

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
Overname
ObjectDisposedException
Overname
Kenmerken

Voorbeelden

In het volgende voorbeeld ziet u een fout die ervoor zorgt dat de ObjectDisposedException uitzondering wordt gegenereerd.

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

Deze code produceert de volgende uitvoer:

Caught:
  Cannot access a closed Stream.

Opmerkingen

Er ObjectDisposedException wordt een gegenereerd wanneer u probeert toegang te krijgen tot een lid van een object dat de IDisposable interface of IAsyncDisposable interface implementeert en dat object is verwijderd. Deze uitzondering wordt meestal veroorzaakt door een van de volgende voorwaarden:

  • U hebt de methode van een IDisposable object Dispose (of de methode van IDisposableAsync een DisposeAsync object) aangeroepen en u probeert toegang te krijgen tot een exemplaarlid dat de status van het object ophaalt of instelt. In het volgende voorbeeld ziet u wat ObjectDisposedException er wordt gegenereerd wanneer u de frequentie van timermeldingen opnieuw instelt nadat u de Timer.Dispose methode hebt aangeroepen.

    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()
    
  • U hebt de methode van Close een object aangeroepen en u probeert toegang te krijgen tot een exemplaarlid dat de status van het object ophaalt of instelt. Vaak biedt de Close methode een openbare implementatie van de IDisposable.Dispose methode. Hetzelfde geldt voor CloseAsync en <xref:System.IAsyncDisposable.DisposeAsync*?displayProperty=nameWithType>.

  • U hebt meerdere keren een object Dispose of DisposeAsync methoden aangeroepen. Normaal gesproken genereert dit geen uitzondering. Afhankelijk van hoe een type wordt geïmplementeerd IDisposable.Dispose of IAsyncDisposable.DisposeAsync, kan het echter niet toestaan dat meerdere aanroepen naar die methode worden uitgevoerd.

In de meeste gevallen is deze uitzondering het gevolg van een fout in de ontwikkelaar. In plaats van de fout in een try/catch blok te verwerken, moet u de fout corrigeren, meestal door het object opnieuw te maken.

Constructors

Name Description
ObjectDisposedException(SerializationInfo, StreamingContext)
Verouderd.

Initialiseert een nieuw exemplaar van de ObjectDisposedException klasse met geserialiseerde gegevens.

ObjectDisposedException(String, Exception)

Initialiseert een nieuw exemplaar van de ObjectDisposedException klasse met een opgegeven foutbericht en een verwijzing naar de binnenste uitzondering die de oorzaak van deze uitzondering is.

ObjectDisposedException(String, String)

Initialiseert een nieuw exemplaar van de ObjectDisposedException klasse met de opgegeven objectnaam en het opgegeven bericht.

ObjectDisposedException(String)

Initialiseert een nieuw exemplaar van de ObjectDisposedException klasse met een tekenreeks die de naam van het verwijderd object bevat.

Eigenschappen

Name Description
Data

Hiermee haalt u een verzameling sleutel-waardeparen op die aanvullende door de gebruiker gedefinieerde informatie over de uitzondering bieden.

(Overgenomen van Exception)
HelpLink

Hiermee haalt u een koppeling op naar het Help-bestand dat aan deze uitzondering is gekoppeld.

(Overgenomen van Exception)
HResult

Hiermee wordt HRESULT opgehaald of ingesteld, een gecodeerde numerieke waarde die is toegewezen aan een specifieke uitzondering.

(Overgenomen van Exception)
InnerException

Hiermee haalt u het Exception exemplaar op dat de huidige uitzondering heeft veroorzaakt.

(Overgenomen van Exception)
Message

Hiermee wordt het bericht weergegeven waarin de fout wordt beschreven.

ObjectName

Hiermee haalt u de naam van het verwijderd object op.

Source

Hiermee wordt de naam van de toepassing of het object dat de fout veroorzaakt, opgehaald of ingesteld.

(Overgenomen van Exception)
StackTrace

Hiermee haalt u een tekenreeksweergave van de directe frames op de aanroepstack op.

(Overgenomen van Exception)
TargetSite

Hiermee haalt u de methode op waarmee de huidige uitzondering wordt gegenereerd.

(Overgenomen van Exception)

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetBaseException()

Wanneer deze wordt overschreven in een afgeleide klasse, retourneert u de Exception hoofdoorzaak van een of meer volgende uitzonderingen.

(Overgenomen van Exception)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetObjectData(SerializationInfo, StreamingContext)
Verouderd.

Hiermee haalt u het SerializationInfo object op met de parameternaam en aanvullende informatie over uitzonderingen.

GetType()

Hiermee haalt u het runtimetype van het huidige exemplaar op.

(Overgenomen van Exception)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ThrowIf(Boolean, Object)

Genereert een ObjectDisposedException als de opgegeven condition is true.

ThrowIf(Boolean, Type)

Genereert een ObjectDisposedException als de opgegeven condition is true.

ToString()

Hiermee maakt en retourneert u een tekenreeksweergave van de huidige uitzondering.

(Overgenomen van Exception)

gebeurtenis

Name Description
SerializeObjectState
Verouderd.

Treedt op wanneer een uitzondering wordt geserialiseerd om een uitzonderingsstatusobject te maken dat geserialiseerde gegevens over de uitzondering bevat.

(Overgenomen van Exception)

Van toepassing op

Zie ook