Skip to main content
.NET Framework Class Library
ObjectDisposedException Class

The exception that is thrown when an operation is performed on a disposed object.

Inheritance Hierarchy
SystemObject
   SystemException
     SystemSystemException
       SystemInvalidOperationException
        SystemObjectDisposedException

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)
Syntax
<[%$TOPIC/y31w16ca_en-us_VS_110_2_0_0_0_0%]> _
<[%$TOPIC/y31w16ca_en-us_VS_110_2_0_0_0_1%](True)> _
Public Class ObjectDisposedException _
	Inherits [%$TOPIC/y31w16ca_en-us_VS_110_2_0_0_0_2%]
[[%$TOPIC/y31w16ca_en-us_VS_110_2_0_1_0_0%]]
[[%$TOPIC/y31w16ca_en-us_VS_110_2_0_1_0_1%](true)]
public class ObjectDisposedException : [%$TOPIC/y31w16ca_en-us_VS_110_2_0_1_0_2%]
[[%$TOPIC/y31w16ca_en-us_VS_110_2_0_2_0_0%]]
[[%$TOPIC/y31w16ca_en-us_VS_110_2_0_2_0_1%](true)]
public ref class ObjectDisposedException : public [%$TOPIC/y31w16ca_en-us_VS_110_2_0_2_0_2%]
[<[%$TOPIC/y31w16ca_en-us_VS_110_2_0_3_0_0%]>]
[<[%$TOPIC/y31w16ca_en-us_VS_110_2_0_3_0_1%](true)>]
type ObjectDisposedException =  
    class 
        inherit [%$TOPIC/y31w16ca_en-us_VS_110_2_0_3_0_2%] 
    end

The ObjectDisposedException type exposes the following members.

Constructors
  NameDescription
Public method Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps ObjectDisposedException(String)Initializes a new instance of the ObjectDisposedException class with a string containing the name of the disposed object.
Protected method ObjectDisposedException(SerializationInfo, StreamingContext)Initializes a new instance of the ObjectDisposedException class with serialized data.
Public method Supported by Portable Class Library Supported in .NET for Windows Store apps ObjectDisposedException(String, Exception)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.
Public method Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps ObjectDisposedException(String, String)Initializes a new instance of the ObjectDisposedException class with the specified object name and message.
Top
Properties
  NameDescription
Public property Supported by Portable Class Library Supported in .NET for Windows Store apps DataGets a collection of key/value pairs that provide additional user-defined information about the exception. (Inherited from Exception.)
Public property Supported by Portable Class Library Supported in .NET for Windows Store apps HelpLinkGets or sets a link to the help file associated with this exception. (Inherited from Exception.)
Public property Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps HResultGets or sets HRESULT, a coded numerical value that is assigned to a specific exception. (Inherited from Exception.)
Public property Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps InnerExceptionGets the Exception instance that caused the current exception. (Inherited from Exception.)
Public property Supported by the XNA Framework MessageGets the message that describes the error. (Overrides ExceptionMessage.)

In XNA Framework 3.0, this member is inherited from Exception Message.
Public property Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps ObjectNameGets the name of the disposed object.
Public property Supported by Portable Class Library Supported in .NET for Windows Store apps SourceGets or sets the name of the application or the object that causes the error. (Inherited from Exception.)
Public property Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps StackTraceGets a string representation of the immediate frames on the call stack. (Inherited from Exception.)
Public property TargetSiteGets the method that throws the current exception. (Inherited from Exception.)
Top
Methods
  NameDescription
Public method Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps Equals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected method Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps FinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps GetBaseExceptionWhen overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions. (Inherited from Exception.)
Public method Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps GetHashCodeServes as the default hash function. (Inherited from Object.)
Public method GetObjectDataRetrieves the SerializationInfo object with the parameter name and additional exception information. (Overrides ExceptionGetObjectData(SerializationInfo, StreamingContext).)
Public method Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps GetTypeGets the runtime type of the current instance. (Inherited from Exception.)

In XNA Framework 3.0, this member is inherited from Object GetType.


In Portable Class Library Portable Class Library, this member is inherited from Object GetType.


In .NET for Windows Store apps Windows 8, this member is inherited from Object GetType.
Protected method Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps MemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public method Supported by the XNA Framework Supported by Portable Class Library Supported in .NET for Windows Store apps ToStringCreates and returns a string representation of the current exception. (Inherited from Exception.)
Top
Events
  NameDescription
Protected event SerializeObjectStateOccurs when an exception is serialized to create an exception state object that contains serialized data about the exception. (Inherited from Exception.)
Top
Remarks

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. Typically, this exception is caused by one of the following conditions:

  • 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. The following example illustrates the ObjectDisposedException that is thrown when you try to reset the frequency of timer notifications after you call the TimerDispose method.

    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()
    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()
  • 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. Often, the Close method provides a type's public implementation of the IDisposableDispose method.

  • You've called an object's Dispose method multiple times. Typically, this doesn’t throw an exception. However, depending on how a type implements IDisposableDispose, it may not allow multiple calls to Dispose.

In most cases, this exception results from developer error. Instead of handling the error in a try/catch block, you should correct the error, typically by reinstantiating the object.

Examples

The following example demonstrates an error that causes the ObjectDisposedException exception to be thrown.

Imports System
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 'Main
End Class 'ObjectDisposedExceptionTest
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);
      }
   }
}
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 );
   }

}

This code produces the following output:

Caught:
  Cannot access a closed Stream.
Version Information

.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone Silverlight 8.1, Windows Phone Silverlight 8
Platforms

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.