@@ -1394,22 +1394,26 @@ static async Task RunAsyncIOTest()
1394
1394
var done = new AutoResetEvent ( false ) ;
1395
1395
1396
1396
// Receiver
1397
+ bool stop = false ;
1397
1398
var receiveBuffer = new byte [ 1 ] ;
1398
- using var listener = new TcpListener ( IPAddress . Loopback , 0 ) ;
1399
+ var listener = new TcpListener ( IPAddress . Loopback , 0 ) ;
1399
1400
listener . Start ( ) ;
1400
1401
var t = ThreadTestHelpers . CreateGuardedThread (
1401
1402
out Action checkForThreadErrors ,
1402
1403
out Action waitForThread ,
1403
1404
async ( ) =>
1404
1405
{
1405
- while ( true )
1406
+ using ( listener )
1406
1407
{
1407
- // Accept a connection, receive a byte
1408
- using var socket = await listener . AcceptSocketAsync ( ) ;
1409
- int bytesRead =
1410
- await socket . ReceiveAsync ( new ArraySegment < byte > ( receiveBuffer ) , SocketFlags . None ) ;
1411
- Assert . Equal ( 1 , bytesRead ) ;
1412
- done . Set ( ) ; // indicate byte received
1408
+ while ( ! stop )
1409
+ {
1410
+ // Accept a connection, receive a byte
1411
+ using var socket = await listener . AcceptSocketAsync ( ) ;
1412
+ int bytesRead =
1413
+ await socket . ReceiveAsync ( new ArraySegment < byte > ( receiveBuffer ) , SocketFlags . None ) ;
1414
+ Assert . Equal ( 1 , bytesRead ) ;
1415
+ done . Set ( ) ; // indicate byte received
1416
+ }
1413
1417
}
1414
1418
} ) ;
1415
1419
t . IsBackground = true ;
@@ -1427,6 +1431,9 @@ static async Task RunAsyncIOTest()
1427
1431
Assert . Equal ( 1 , bytesSent ) ;
1428
1432
done . CheckedWait ( ) ; // wait for byte to the received
1429
1433
}
1434
+
1435
+ stop = true ;
1436
+ waitForThread ( ) ;
1430
1437
}
1431
1438
} ) . Dispose ( ) ;
1432
1439
} , ioCompletionPortCount . ToString ( ) ) . Dispose ( ) ;
0 commit comments