ObjectDisposedException Sınıf

Tanım

Atılmış bir nesne üzerinde bir işlem gerçekleştirildiğinde oluşturulan özel durum.The exception that is thrown when an operation is performed on a disposed 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
Devralma
ObjectDisposedException
Devralma
Öznitelikler

Örnekler

Aşağıdaki örnek, özel durumun oluşturulmasına neden olan bir hatayı gösterir ObjectDisposedException .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

Bu kod şu çıkışı oluşturur:This code produces the following output:

Caught:  
  Cannot access a closed Stream.  

Açıklamalar

, ObjectDisposedException Arabirimini uygulayan bir nesnenin üyesine erişmeye çalıştığınızda IDisposable ve bu nesne atılmışsa oluşturulur.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. Genellikle, bu özel durum aşağıdaki koşullardan biri nedeniyle oluşur:Typically, this exception is caused by one of the following conditions:

  • Bir nesnenin Dispose metodunu çağırdı ve nesnenin durumunu alan veya ayarlayan bir örnek üyesine erişmeye çalışıyorsunuz.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. Aşağıdaki örnek, ObjectDisposedException yöntemini çağırdıktan sonra Zamanlayıcı bildirimlerinin sıklığını sıfırlamaya çalıştığınızda oluşturulan öğesini gösterir Timer.Dispose .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()
    
  • Bir nesnenin Close metodunu çağırdı ve nesnenin durumunu alan veya ayarlayan bir örnek üyesine erişmeye çalışıyorsunuz.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. Genellikle yöntemi yöntemin Close genel uygulamasını sağlar IDisposable.Dispose .Often, the Close method provides a type's public implementation of the IDisposable.Dispose method.

  • Bir nesnenin Dispose metodunu birden çok kez çağırdık.You've called an object's Dispose method multiple times. Genellikle bu, bir özel durum oluşturmaz.Typically, this doesn't throw an exception. Ancak, bir türün nasıl uyguladığına bağlı olarak IDisposable.Dispose , birden çok çağrıya izin vermeyebilir Dispose .However, depending on how a type implements IDisposable.Dispose, it may not allow multiple calls to Dispose.

Çoğu durumda, bu özel durum geliştirici hatasından kaynaklanır.In most cases, this exception results from developer error. Hatayı bir blokta işlemek yerine, try / catch genellikle nesneyi yeniden oluşturarak hatayı düzeltmeniz gerekir.Instead of handling the error in a try/catch block, you should correct the error, typically by reinstantiating the object.

Oluşturucular

ObjectDisposedException(SerializationInfo, StreamingContext)

ObjectDisposedException sınıfının yeni bir örneğini serileştirilmiş verilerle başlatır.Initializes a new instance of the ObjectDisposedException class with serialized data.

ObjectDisposedException(String)

ObjectDisposedExceptionÇıkarılan nesnenin adını içeren bir dize ile sınıfın yeni bir örneğini başlatır.Initializes a new instance of the ObjectDisposedException class with a string containing the name of the disposed object.

ObjectDisposedException(String, Exception)

ObjectDisposedExceptionBelirtilen bir hata iletisiyle sınıfın yeni bir örneğini ve bu özel durumun nedeni olan iç özel duruma bir başvuruyu başlatır.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)

ObjectDisposedExceptionBelirtilen nesne adı ve iletisiyle sınıfının yeni bir örneğini başlatır.Initializes a new instance of the ObjectDisposedException class with the specified object name and message.

Özellikler

Data

Özel durum hakkında ek kullanıcı tanımlı bilgiler sağlayan anahtar/değer çiftleri koleksiyonunu alır.Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(Devralındığı yer: Exception)
HelpLink

Bu özel durumla ilişkili Yardım dosyasının bağlantısını alır veya ayarlar.Gets or sets a link to the help file associated with this exception.

(Devralındığı yer: Exception)
HResult

Belirli bir özel duruma atanan kodlanmış bir sayısal değer olan HRESULT 'yi alır veya ayarlar.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(Devralındığı yer: Exception)
InnerException

ExceptionGeçerli özel duruma neden olan örneği alır.Gets the Exception instance that caused the current exception.

(Devralındığı yer: Exception)
Message

Hatayı açıklayan iletiyi alır.Gets the message that describes the error.

ObjectName

Çıkarılan nesnenin adını alır.Gets the name of the disposed object.

Source

Uygulamanın veya hataya neden olan nesnenin adını alır veya ayarlar.Gets or sets the name of the application or the object that causes the error.

(Devralındığı yer: Exception)
StackTrace

Çağrı yığınında anlık çerçevelerin dize gösterimini alır.Gets a string representation of the immediate frames on the call stack.

(Devralındığı yer: Exception)
TargetSite

Geçerli özel durumu oluşturan yöntemi alır.Gets the method that throws the current exception.

(Devralındığı yer: Exception)

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.Determines whether the specified object is equal to the current object.

(Devralındığı yer: Object)
GetBaseException()

Türetilmiş bir sınıfta geçersiz kılınırsa, Exception bir veya daha fazla sonraki özel durumun kök nedeni olan öğesini döndürür.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(Devralındığı yer: Exception)
GetHashCode()

Varsayılan karma işlevi olarak işlev görür.Serves as the default hash function.

(Devralındığı yer: Object)
GetObjectData(SerializationInfo, StreamingContext)

SerializationInfoParametre adı ve ek özel durum bilgileri ile nesneyi alır.Retrieves the SerializationInfo object with the parameter name and additional exception information.

GetObjectData(SerializationInfo, StreamingContext)

Türetilmiş bir sınıfta geçersiz kılınırsa, SerializationInfo özel durum hakkındaki bilgileri ayarlar.When overridden in a derived class, sets the SerializationInfo with information about the exception.

(Devralındığı yer: Exception)
GetType()

Geçerli örneğin çalışma zamanı türünü alır.Gets the runtime type of the current instance.

(Devralındığı yer: Exception)
MemberwiseClone()

Geçerli bir basit kopyasını oluşturur Object .Creates a shallow copy of the current Object.

(Devralındığı yer: Object)
ToString()

Geçerli özel durumun dize gösterimini oluşturur ve döndürür.Creates and returns a string representation of the current exception.

(Devralındığı yer: Exception)

Ekinlikler

SerializeObjectState

Özel durum hakkında serileştirilmiş veri içeren bir özel durum nesnesi oluşturmak için bir özel durum serileştirildiğinde gerçekleşir.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(Devralındığı yer: Exception)

Şunlara uygulanır

Ayrıca bkz.