İngilizce dilinde oku

Aracılığıyla paylaş


ObjectDisposedException Sınıf

Tanım

Atılan nesnede bir işlem gerçekleştirildiğinde oluşan özel durum.

public class ObjectDisposedException : InvalidOperationException
[System.Serializable]
public class ObjectDisposedException : InvalidOperationException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ObjectDisposedException : InvalidOperationException
Devralma
ObjectDisposedException
Devralma
Öznitelikler

Örnekler

Aşağıdaki örnekte, ObjectDisposedException özel durumunun oluşturmasına neden olan bir hata gösterilmektedir.

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

Bu kod aşağıdaki çıkışı oluşturur:

Caught:
  Cannot access a closed Stream.

Açıklamalar

IDisposable arabirimini veya IAsyncDisposable arabirimini uygulayan bir nesnenin üyesine erişmeye çalıştığınızda bir ObjectDisposedException oluşturulur ve bu nesne atılır. Bu özel durum genellikle aşağıdaki koşullardan birinden kaynaklanır:

  • bir IDisposable nesnesinin Dispose yöntemini (veya bir IDisposableAsync nesnesinin DisposeAsync yöntemini) çağırdınız ve nesnenin durumunu alan veya ayarlayan bir örnek üyesine erişmeye çalışıyorsunuz. Aşağıdaki örnekte, Timer.Dispose yöntemini çağırdıktan sonra zamanlayıcı bildirimlerinin sıklığını sıfırlamaya çalıştığınızda oluşan ObjectDisposedException gösterilmektedir.

    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()
    
  • Bir nesnenin Close yöntemini çağırdınız ve nesnenin durumunu alan veya ayarlayan bir örnek üyesine erişmeye çalışıyorsunuz. genellikle Close yöntemi, IDisposable.Dispose yönteminin türünün genel uygulamasını sağlar. Aynı durum CloseAsync ve <xref:System.IAsyncDisposable.DisposeAsync%2A?displayProperty=nameWithType>için de geçerlidir.

  • Bir nesnenin Dispose veya DisposeAsync yöntemlerini birden çok kez çağırdınız. Bu genellikle bir özel durum oluşturmaz. Ancak, bir türün IDisposable.Dispose veya IAsyncDisposable.DisposeAsyncnasıl uyguladığına bağlı olarak, bu yönteme birden çok çağrıya izin vermeyebilir.

Çoğu durumda, bu özel durum geliştirici hatasından kaynaklanır. Hatayı bir try/catch bloğunda işlemek yerine, genellikle nesneyi yeniden kanıtlayarak hatayı düzeltmeniz gerekir.

Oluşturucular

ObjectDisposedException(SerializationInfo, StreamingContext)
Geçersiz.

Serileştirilmiş verilerle ObjectDisposedException sınıfının yeni bir örneğini başlatır.

ObjectDisposedException(String, Exception)

Belirtilen bir hata iletisi ve bu özel durumun nedeni olan iç özel duruma başvuru ile ObjectDisposedException sınıfının yeni bir örneğini başlatır.

ObjectDisposedException(String, String)

Belirtilen nesne adı ve iletiyle ObjectDisposedException sınıfının yeni bir örneğini başlatır.

ObjectDisposedException(String)

atılan nesnenin adını içeren bir dize ile ObjectDisposedException sınıfının yeni bir örneğini başlatır.

Özellikler

Data

Özel durum hakkında kullanıcı tanımlı ek bilgiler sağlayan anahtar/değer çiftleri koleksiyonunu alır.

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

Bu özel durumla ilişkili yardım dosyasının bağlantısını alır veya ayarlar.

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

Belirli bir özel duruma atanan kodlanmış sayısal bir değer olan HRESULT değerini alır veya ayarlar.

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

Geçerli özel duruma neden olan Exception örneğini alır.

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

Hatayı açıklayan iletiyi alır.

ObjectName

Atılan nesnenin adını alır.

Source

Hataya neden olan uygulamanın veya nesnenin adını alır veya ayarlar.

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

Çağrı yığınındaki anlık çerçevelerin dize gösterimini alır.

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

Geçerli özel durumu oluşturan yöntemini alır.

(Devralındığı yer: Exception)

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

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

Türetilmiş bir sınıfta geçersiz kılındığında, sonraki bir veya daha fazla özel durumun kök nedeni olan Exception döndürür.

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

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetObjectData(SerializationInfo, StreamingContext)
Geçersiz.

parametre adı ve ek özel durum bilgileriyle SerializationInfo nesnesini alır.

GetObjectData(SerializationInfo, StreamingContext)
Geçersiz.

Türetilmiş bir sınıfta geçersiz kılındığında, özel durumla ilgili bilgilerle SerializationInfo ayarlar.

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

Geçerli örneğin çalışma zamanı türünü alır.

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

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
ThrowIf(Boolean, Object)

Belirtilen conditiontrueise bir ObjectDisposedException oluşturur.

ThrowIf(Boolean, Type)

Belirtilen conditiontrueise bir ObjectDisposedException oluşturur.

ToString()

Geçerli özel durumun dize gösterimini oluşturur ve döndürür.

(Devralındığı yer: Exception)

Ekinlikler

SerializeObjectState
Geçersiz.

Özel durum hakkında serileştirilmiş veriler içeren bir özel durum durumu nesnesi oluşturmak için bir özel durum seri hale getirildiğinde gerçekleşir.

(Devralındığı yer: Exception)

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.