ObjectDisposedException Klasa

Definicja

Wyjątek, który jest generowany, gdy operacja jest wykonywana na usuniętym obiekcie.The exception that is thrown when an operation is performed on a disposed object.

public ref class ObjectDisposedException : InvalidOperationException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class ObjectDisposedException : InvalidOperationException
type ObjectDisposedException = class
    inherit InvalidOperationException
Public Class ObjectDisposedException
Inherits InvalidOperationException
Dziedziczenie
Atrybuty

Przykłady

Poniższy przykład ilustruje błąd ObjectDisposedException powodujący zgłoszenie wyjątku.The following example demonstrates an error that causes the ObjectDisposedException exception to be thrown.

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

}

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

Ten kod generuje następujące dane wyjściowe:This code produces the following output:

Caught:  
  Cannot access a closed Stream.  

Uwagi

Jest generowany podczas próby uzyskania dostępu do elementu członkowskiego obiektu, który IDisposable implementuje interfejs, i ten obiekt został usunięty. ObjectDisposedExceptionAn ObjectDisposedException is thrown when you try to access a member of an object that implements the IDisposable interface, and that object has been disposed. Zazwyczaj ten wyjątek jest spowodowany przez jeden z następujących warunków:Typically, this exception is caused by one of the following conditions:

  • Wywołano Dispose metodę obiektu i próbujesz uzyskać dostęp do elementu członkowskiego wystąpienia, który pobiera lub ustawia stan obiektu.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. Poniższy przykład ilustruje ObjectDisposedException , że jest generowany podczas próby zresetowania częstotliwości powiadomień czasomierza po Timer.Dispose wywołaniu metody.The following example illustrates the ObjectDisposedException that is thrown when you try to reset the frequency of timer notifications after you call the Timer.Dispose method.

    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()
    
    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()
    
  • Wywołano Close metodę obiektu i próbujesz uzyskać dostęp do elementu członkowskiego wystąpienia, który pobiera lub ustawia stan obiektu.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. Często Metoda zapewnia publiczną implementację IDisposable.Disposemetody. CloseOften, the Close method provides a type's public implementation of the IDisposable.Dispose method.

  • Dispose Metoda obiektu została wywołana wiele razy.You've called an object's Dispose method multiple times. Zazwyczaj nie zgłasza wyjątku.Typically, this doesn't throw an exception. Jednak w zależności od sposobu implementowania IDisposable.Disposetypu może nie zezwalać na Disposewiele wywołań.However, depending on how a type implements IDisposable.Dispose, it may not allow multiple calls to Dispose.

W większości przypadków ten wyjątek wynika z błędu dewelopera.In most cases, this exception results from developer error. Zamiast obsłużyć błąd w try / catch bloku, należy poprawić błąd, zazwyczaj przez ponowny utworzenie wystąpienia obiektu.Instead of handling the error in a try/catch block, you should correct the error, typically by reinstantiating the object.

Konstruktory

ObjectDisposedException(SerializationInfo, StreamingContext)

Inicjuje nowe wystąpienie klasy ObjectDisposedException klasy z serializowanych danych.Initializes a new instance of the ObjectDisposedException class with serialized data.

ObjectDisposedException(String)

Inicjuje nowe wystąpienie ObjectDisposedException klasy z ciągiem zawierającym nazwę usuniętego obiektu.Initializes a new instance of the ObjectDisposedException class with a string containing the name of the disposed object.

ObjectDisposedException(String, Exception)

Inicjuje nowe wystąpienie klasy ObjectDisposedException klasy przy użyciu określonego komunikatu o błędzie i odwołania do wewnętrznego wyjątku, który jest przyczyną tego wyjątku.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.

ObjectDisposedException(String, String)

Inicjuje nowe wystąpienie ObjectDisposedException klasy z określoną nazwą obiektu i komunikatem.Initializes a new instance of the ObjectDisposedException class with the specified object name and message.

Właściwości

Data

Pobiera kolekcję par klucz/wartość, które zawierają dodatkowe informacje zdefiniowane przez użytkownika dotyczące wyjątku.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Odziedziczone po Exception)
HelpLink

Pobiera lub ustawia link do pliku pomocy skojarzonego z tym wyjątkiem.Gets or sets a link to the help file associated with this exception.

(Odziedziczone po Exception)
HResult

Pobiera lub ustawia wartość HRESULT, kodowane wartości liczbowe przypisane do określonego wyjątku.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Odziedziczone po Exception)
InnerException

Exception Pobiera wystąpienie, które spowodowało bieżący wyjątek.Gets the Exception instance that caused the current exception.

(Odziedziczone po Exception)
Message

Pobiera komunikat, który opisuje błąd.Gets the message that describes the error.

ObjectName

Pobiera nazwę usuniętego obiektu.Gets the name of the disposed object.

Source

Pobiera lub ustawia nazwę aplikacji lub obiekt, który powoduje błąd.Gets or sets the name of the application or the object that causes the error.

(Odziedziczone po Exception)
StackTrace

Pobiera ciąg reprezentujący bezpośrednie ramki w stosie wywołań.Gets a string representation of the immediate frames on the call stack.

(Odziedziczone po Exception)
TargetSite

Pobiera metodę, która zgłasza bieżący wyjątek.Gets the method that throws the current exception.

(Odziedziczone po Exception)

Metody

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetBaseException()

Gdy jest zastępowany w klasie pochodnej, zwraca Exception wartość będącą główną przyczyną jednego lub kilku kolejnych wyjątków.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Odziedziczone po Exception)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetObjectData(SerializationInfo, StreamingContext)

SerializationInfo Pobiera obiekt z nazwą parametru i dodatkowymi informacjami o wyjątku.Retrieves the SerializationInfo object with the parameter name and additional exception information.

GetType()

Pobiera typ środowiska uruchomieniowego bieżącego wystąpienia.Gets the runtime type of the current instance.

(Odziedziczone po Exception)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Objectelementu.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ToString()

Tworzy i zwraca reprezentację ciągu bieżącego wyjątku.Creates and returns a string representation of the current exception.

(Odziedziczone po Exception)

Zdarzenia

SerializeObjectState

Występuje, gdy wyjątek jest serializowany w celu utworzenia obiektu stanu wyjątku, który zawiera serializowane dane dotyczące wyjątku.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Odziedziczone po Exception)

Dotyczy

Zobacz też