ObjectDisposedException Classe
Definizione
Eccezione generata durante l'esecuzione di un'operazione su un oggetto eliminato.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
- Ereditarietà
- Ereditarietà
- Attributi
Esempio
Nell'esempio seguente viene illustrato un errore che causa la generazione dell' ObjectDisposedException
eccezione.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
Questo codice genera l'output seguente:This code produces the following output:
Caught:
Cannot access a closed Stream.
Commenti
ObjectDisposedExceptionViene generata un'eccezione quando si tenta di accedere a un membro di un oggetto che implementa l' IDisposable interfaccia e l'oggetto è stato eliminato.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. In genere, questa eccezione è causata da una delle condizioni seguenti:Typically, this exception is caused by one of the following conditions:
È stato chiamato il metodo di un oggetto
Dispose
e si sta tentando di accedere a un membro di istanza che ottiene o imposta lo stato dell'oggetto.You've called an object'sDispose
method, and you're trying to access an instance member that gets or sets the object's state. Nell'esempio seguente viene illustrato l' ObjectDisposedException eccezione generata quando si tenta di reimpostare la frequenza delle notifiche del timer dopo la chiamata al Timer.Dispose metodo.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()
È stato chiamato il metodo di un oggetto
Close
e si sta tentando di accedere a un membro di istanza che ottiene o imposta lo stato dell'oggetto.You've called an object'sClose
method, and you're trying to access an instance member that gets or sets the object's state. Spesso ilClose
metodo fornisce un'implementazione pubblica del tipo del IDisposable.Dispose metodo.Often, theClose
method provides a type's public implementation of the IDisposable.Dispose method.Il metodo di un oggetto è stato chiamato
Dispose
più volte.You've called an object'sDispose
method multiple times. In genere, questa operazione non genera un'eccezione.Typically, this doesn't throw an exception. Tuttavia, a seconda della modalità di implementazione di un tipo IDisposable.Dispose , potrebbe non consentire più chiamate aDispose
.However, depending on how a type implements IDisposable.Dispose, it may not allow multiple calls toDispose
.
Nella maggior parte dei casi, questa eccezione viene generata dall'errore dello sviluppatore.In most cases, this exception results from developer error. Anziché gestire l'errore in un try
/ catch
blocco, è necessario correggere l'errore, in genere creando una nuova istanza dell'oggetto.Instead of handling the error in a try
/catch
block, you should correct the error, typically by reinstantiating the object.
Costruttori
ObjectDisposedException(SerializationInfo, StreamingContext) |
Inizializza una nuova istanza della classe ObjectDisposedException con dati serializzati.Initializes a new instance of the ObjectDisposedException class with serialized data. |
ObjectDisposedException(String) |
Consente di inizializzare una nuova istanza della classe ObjectDisposedException con una stringa contenente il nome dell'oggetto eliminato.Initializes a new instance of the ObjectDisposedException class with a string containing the name of the disposed object. |
ObjectDisposedException(String, Exception) |
Inizializza una nuova istanza della classe ObjectDisposedException con un messaggio di errore specificato e un riferimento all'eccezione interna che è la causa dell'eccezione corrente.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) |
Consente di inizializzare una nuova istanza della classe ObjectDisposedException con il nome dell'oggetto e il messaggio specificati.Initializes a new instance of the ObjectDisposedException class with the specified object name and message. |
Proprietà
Data |
Ottiene una raccolta di coppie chiave/valore che forniscono informazioni definite dall'utente aggiuntive sull'eccezione.Gets a collection of key/value pairs that provide additional user-defined information about the exception. (Ereditato da Exception) |
HelpLink |
Ottiene o imposta un collegamento al file della Guida associato all'eccezione.Gets or sets a link to the help file associated with this exception. (Ereditato da Exception) |
HResult |
Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato a un'eccezione specifica.Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception. (Ereditato da Exception) |
InnerException |
Ottiene l'istanza di Exception che ha causato l'eccezione corrente.Gets the Exception instance that caused the current exception. (Ereditato da Exception) |
Message |
Ottiene il messaggio nel quale è descritto l'errore.Gets the message that describes the error. |
ObjectName |
Ottiene il nome dell'oggetto eliminato.Gets the name of the disposed object. |
Source |
Ottiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore.Gets or sets the name of the application or the object that causes the error. (Ereditato da Exception) |
StackTrace |
Ottiene una rappresentazione di stringa dei frame immediati nello stack di chiamate.Gets a string representation of the immediate frames on the call stack. (Ereditato da Exception) |
TargetSite |
Ottiene il metodo che genera l'eccezione corrente.Gets the method that throws the current exception. (Ereditato da Exception) |
Metodi
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object. (Ereditato da Object) |
GetBaseException() |
Quando ne viene eseguito l'override in una classe derivata, restituisce l'Exception che è la causa radice di una o più eccezioni successive.When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions. (Ereditato da Exception) |
GetHashCode() |
Funge da funzione hash predefinita.Serves as the default hash function. (Ereditato da Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Consente di recuperare l'oggetto SerializationInfo con il nome del parametro e informazioni aggiuntive sull'eccezione.Retrieves the SerializationInfo object with the parameter name and additional exception information. |
GetObjectData(SerializationInfo, StreamingContext) |
Quando ne viene eseguito l'override in una classe derivata, imposta il controllo SerializationInfo con le informazioni sull'eccezione.When overridden in a derived class, sets the SerializationInfo with information about the exception. (Ereditato da Exception) |
GetType() |
Ottiene il tipo di runtime dell'istanza corrente.Gets the runtime type of the current instance. (Ereditato da Exception) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object. (Ereditato da Object) |
ToString() |
Crea e restituisce una rappresentazione di stringa dell'eccezione corrente.Creates and returns a string representation of the current exception. (Ereditato da Exception) |
Eventi
SerializeObjectState |
Si verifica quando un'eccezione viene serializzata per creare un oggetto di stato eccezione contenente i dati serializzati relativi all'eccezione.Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception. (Ereditato da Exception) |