diff --git a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs
index 408fbd14f9568d..99f5c75d0e36f5 100644
--- a/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs
+++ b/src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs
@@ -934,7 +934,7 @@ internal sealed class AwaitableSocketAsyncEventArgs : SocketAsyncEventArgs, IVal
/// if it has completed. Another delegate if OnCompleted was called before the operation could complete,
/// in which case it's the delegate to invoke when the operation does complete.
///
- private Action? _continuation;
+ private volatile Action? _continuation;
private ExecutionContext? _executionContext;
private object? _scheduler;
/// Current token value given to a ValueTask and then verified against the value it passes back to us.
@@ -1007,7 +1007,7 @@ protected override void OnCompleted(SocketAsyncEventArgs _)
/// This instance.
public ValueTask AcceptAsync(Socket socket, CancellationToken cancellationToken)
{
- Debug.Assert(Volatile.Read(ref _continuation) == null, "Expected null continuation to indicate reserved for use");
+ Debug.Assert(_continuation == null, "Expected null continuation to indicate reserved for use");
if (socket.AcceptAsync(this, cancellationToken))
{
@@ -1031,7 +1031,7 @@ public ValueTask AcceptAsync(Socket socket, CancellationToken cancellati
/// This instance.
public ValueTask ReceiveAsync(Socket socket, CancellationToken cancellationToken)
{
- Debug.Assert(Volatile.Read(ref _continuation) == null, "Expected null continuation to indicate reserved for use");
+ Debug.Assert(_continuation == null, "Expected null continuation to indicate reserved for use");
if (socket.ReceiveAsync(this, cancellationToken))
{
@@ -1051,7 +1051,7 @@ public ValueTask ReceiveAsync(Socket socket, CancellationToken cancellation
public ValueTask ReceiveFromAsync(Socket socket, CancellationToken cancellationToken)
{
- Debug.Assert(Volatile.Read(ref _continuation) == null, "Expected null continuation to indicate reserved for use");
+ Debug.Assert(_continuation == null, "Expected null continuation to indicate reserved for use");
if (socket.ReceiveFromAsync(this, cancellationToken))
{
@@ -1072,7 +1072,7 @@ public ValueTask ReceiveFromAsync(Socket socket, Cancel
public ValueTask ReceiveMessageFromAsync(Socket socket, CancellationToken cancellationToken)
{
- Debug.Assert(Volatile.Read(ref _continuation) == null, "Expected null continuation to indicate reserved for use");
+ Debug.Assert(_continuation == null, "Expected null continuation to indicate reserved for use");
if (socket.ReceiveMessageFromAsync(this, cancellationToken))
{
@@ -1097,7 +1097,7 @@ public ValueTask ReceiveMessageFromAsync(Socket
/// This instance.
public ValueTask SendAsync(Socket socket, CancellationToken cancellationToken)
{
- Debug.Assert(Volatile.Read(ref _continuation) == null, "Expected null continuation to indicate reserved for use");
+ Debug.Assert(_continuation == null, "Expected null continuation to indicate reserved for use");
if (socket.SendAsync(this, cancellationToken))
{
@@ -1117,7 +1117,7 @@ public ValueTask SendAsync(Socket socket, CancellationToken cancellationTok
public ValueTask SendAsyncForNetworkStream(Socket socket, CancellationToken cancellationToken)
{
- Debug.Assert(Volatile.Read(ref _continuation) == null, "Expected null continuation to indicate reserved for use");
+ Debug.Assert(_continuation == null, "Expected null continuation to indicate reserved for use");
if (socket.SendAsync(this, cancellationToken))
{
@@ -1136,7 +1136,7 @@ public ValueTask SendAsyncForNetworkStream(Socket socket, CancellationToken canc
public ValueTask SendPacketsAsync(Socket socket, CancellationToken cancellationToken)
{
- Debug.Assert(Volatile.Read(ref _continuation) == null, "Expected null continuation to indicate reserved for use");
+ Debug.Assert(_continuation == null, "Expected null continuation to indicate reserved for use");
if (socket.SendPacketsAsync(this, cancellationToken))
{
@@ -1155,7 +1155,7 @@ public ValueTask SendPacketsAsync(Socket socket, CancellationToken cancellationT
public ValueTask SendToAsync(Socket socket, CancellationToken cancellationToken)
{
- Debug.Assert(Volatile.Read(ref _continuation) == null, "Expected null continuation to indicate reserved for use");
+ Debug.Assert(_continuation == null, "Expected null continuation to indicate reserved for use");
if (socket.SendToAsync(this, cancellationToken))
{
@@ -1175,7 +1175,7 @@ public ValueTask SendToAsync(Socket socket, CancellationToken cancellationT
public ValueTask ConnectAsync(Socket socket)
{
- Debug.Assert(Volatile.Read(ref _continuation) == null, "Expected null continuation to indicate reserved for use");
+ Debug.Assert(_continuation == null, "Expected null continuation to indicate reserved for use");
try
{
@@ -1201,7 +1201,7 @@ public ValueTask ConnectAsync(Socket socket)
public ValueTask DisconnectAsync(Socket socket, CancellationToken cancellationToken)
{
- Debug.Assert(Volatile.Read(ref _continuation) == null, $"Expected null continuation to indicate reserved for use");
+ Debug.Assert(_continuation == null, $"Expected null continuation to indicate reserved for use");
if (socket.DisconnectAsync(this, cancellationToken))
{