diff --git a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/RequestContextBase.cs b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/RequestContextBase.cs index c92a66840df5c5..9dfab0c8447d50 100644 --- a/src/libraries/System.Net.HttpListener/src/System/Net/Windows/RequestContextBase.cs +++ b/src/libraries/System.Net.HttpListener/src/System/Net/Windows/RequestContextBase.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.Runtime.InteropServices; +using System.Threading; namespace System.Net { @@ -49,10 +50,10 @@ public void Dispose() protected virtual void Dispose(bool disposing) { - if (_backingBuffer != IntPtr.Zero) + IntPtr backingBuffer = Interlocked.Exchange(ref _backingBuffer, IntPtr.Zero); + if (backingBuffer != IntPtr.Zero) { - Marshal.FreeHGlobal(_backingBuffer); - _backingBuffer = IntPtr.Zero; + Marshal.FreeHGlobal(backingBuffer); } }