diff --git a/snippets/fsharp/System/ObjectDisposedException/Overview/dispose1.fs b/snippets/fsharp/System/ObjectDisposedException/Overview/dispose1.fs new file mode 100644 index 00000000000..92d43a56a9a --- /dev/null +++ b/snippets/fsharp/System/ObjectDisposedException/Overview/dispose1.fs @@ -0,0 +1,24 @@ +module dispose1 + +// +open System +open System.Threading + +let timerNotification _ = + printfn $"Timer event fired at {DateTime.Now:F}" + +let t = new Timer(timerNotification, null, 100, Timeout.Infinite) +Thread.Sleep 2000 +t.Dispose() + +t.Change(200, 1000) +|> ignore +Thread.Sleep 3000 + +// 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 .main() +// \ No newline at end of file diff --git a/snippets/fsharp/System/ObjectDisposedException/Overview/fs.fsproj b/snippets/fsharp/System/ObjectDisposedException/Overview/fs.fsproj new file mode 100644 index 00000000000..ec9b12b533a --- /dev/null +++ b/snippets/fsharp/System/ObjectDisposedException/Overview/fs.fsproj @@ -0,0 +1,11 @@ + + + Exe + net6.0 + + + + + + + \ No newline at end of file diff --git a/snippets/fsharp/System/ObjectDisposedException/Overview/objdispexc.fs b/snippets/fsharp/System/ObjectDisposedException/Overview/objdispexc.fs new file mode 100644 index 00000000000..0fcab25c7f7 --- /dev/null +++ b/snippets/fsharp/System/ObjectDisposedException/Overview/objdispexc.fs @@ -0,0 +1,14 @@ +module objdispexc + +// +open System +open System.IO + +let ms = new MemoryStream 16 +ms.Close() +try + ms.ReadByte() + |> ignore +with :? ObjectDisposedException as e -> + printfn $"Caught: {e.Message}" +// \ No newline at end of file diff --git a/xml/System/ObjectDisposedException.xml b/xml/System/ObjectDisposedException.xml index 5fb590894e5..885e8846945 100644 --- a/xml/System/ObjectDisposedException.xml +++ b/xml/System/ObjectDisposedException.xml @@ -62,6 +62,7 @@ - You've called an `IDisposable` object's `Dispose` method (or an `IDisposableAsync` object's `DisposeAsync` method), and you're trying to access an instance member that gets or sets the object's state. The following example illustrates the that is thrown when you try to reset the frequency of timer notifications after you call the method. :::code language="csharp" source="~/snippets/csharp/System/ObjectDisposedException/Overview/dispose1.cs" id="Snippet1"::: + :::code language="fsharp" source="~/snippets/fsharp/System/ObjectDisposedException/Overview/dispose1.fs" id="Snippet1"::: :::code language="vb" source="~/snippets/visualbasic/VS_Snippets_CLR_System/system.objectdisposedexception/vb/dispose1.vb" id="Snippet1"::: - 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 method. The same is true for `CloseAsync` and ``. @@ -77,6 +78,7 @@ :::code language="cpp" source="~/snippets/cpp/VS_Snippets_CLR/ObjDispEx/CPP/objdispexc.cpp" id="Snippet1"::: :::code language="csharp" source="~/snippets/csharp/System/ObjectDisposedException/Overview/objdispexc.cs" interactive="try-dotnet" id="Snippet1"::: + :::code language="fsharp" source="~/snippets/fsharp/System/ObjectDisposedException/Overview/objdispexc.fs" id="Snippet1"::: :::code language="vb" source="~/snippets/visualbasic/VS_Snippets_CLR/ObjDispEx/VB/objdispexc.vb" id="Snippet1"::: This code produces the following output: