Skip to content

Commit 41fb256

Browse files
authored
Revert "Revert "Use Random.Shared property (#31453)" (#31795)" (#32221)
This reverts commit 131d207.
1 parent c3fe8a0 commit 41fb256

File tree

25 files changed

+50
-67
lines changed

25 files changed

+50
-67
lines changed

src/Components/Samples/BlazorServerApp/Data/WeatherForecastService.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@ public class WeatherForecastService
1313

1414
public Task<WeatherForecast[]> GetForecastAsync(DateTime startDate)
1515
{
16-
var rng = new Random();
1716
return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast
1817
{
1918
Date = startDate.AddDays(index),
20-
TemperatureC = rng.Next(-20, 55),
21-
Summary = Summaries[rng.Next(Summaries.Length)]
19+
TemperatureC = Random.Shared.Next(-20, 55),
20+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
2221
}).ToArray());
2322
}
2423
}

src/Components/WebAssembly/Samples/HostedBlazorWebassemblyApp/Server/Data/WeatherForecastService.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,11 @@ public class WeatherForecastService : IWeatherForecastService
1515

1616
public Task<WeatherForecast[]> GetForecastAsync(DateTime startDate)
1717
{
18-
var rng = new Random();
1918
return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast
2019
{
2120
Date = startDate.AddDays(index),
22-
TemperatureC = rng.Next(-20, 55),
23-
Summary = Summaries[rng.Next(Summaries.Length)]
21+
TemperatureC = Random.Shared.Next(-20, 55),
22+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
2423
}).ToArray());
2524
}
2625
}

src/Components/WebAssembly/testassets/Wasm.Authentication.Server/Controllers/WeatherForecastController.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,11 @@ public WeatherForecastController(ILogger<WeatherForecastController> logger)
2828
[HttpGet]
2929
public IEnumerable<WeatherForecast> Get()
3030
{
31-
var rng = new Random();
3231
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
3332
{
3433
Date = DateTime.Now.AddDays(index),
35-
TemperatureC = rng.Next(-20, 55),
36-
Summary = Summaries[rng.Next(Summaries.Length)]
34+
TemperatureC = Random.Shared.Next(-20, 55),
35+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
3736
})
3837
.ToArray();
3938
}

src/Components/benchmarkapps/BlazingPizza.Server/Pages/Map.razor

+2-3
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,15 @@
1010
@functions {
1111
private int locX;
1212
private int locY;
13-
private Random random = new Random();
1413
private Timer timer;
1514
private string locString;
1615

1716
protected override void OnInitialized()
1817
{
1918
timer = new Timer(_ =>
2019
{
21-
locX = random.Next(1000);
22-
locY = random.Next(1000);
20+
locX = Random.Shared.Next(1000);
21+
locY = Random.Shared.Next(1000);
2322
locString = $"{locX},{locY}";
2423

2524
InvokeAsync(() => StateHasChanged());

src/Components/benchmarkapps/Wasm.Performance/TestApp/Pages/TimerComponent.razor

+3-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
@code
99
{
10-
Random random = new Random();
1110
Timer timer;
1211
int red = 128;
1312
int green = 128;
@@ -22,9 +21,9 @@
2221
{
2322
InvokeAsync(() =>
2423
{
25-
red = random.Next(0, 256);
26-
green = random.Next(0, 256);
27-
blue = random.Next(0, 256);
24+
red = Random.Shared.Next(0, 256);
25+
green = Random.Shared.Next(0, 256);
26+
blue = Random.Shared.Next(0, 256);
2827
StateHasChanged();
2928
BenchmarkEvent.Send(JSRuntime, "Finished updating color");
3029
});

src/Components/test/testassets/BasicTestApp/ReorderingFocusComponent.razor

+1-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
</ul>
3232

3333
@code {
34-
Random rng = new Random();
3534
TodoItem[] todoItems = new[]
3635
{
3736
new TodoItem { Id = 1, Text = "First" },
@@ -43,7 +42,7 @@
4342

4443
void Shuffle()
4544
{
46-
todoItems = todoItems.OrderBy(x => rng.Next()).ToArray();
45+
todoItems = todoItems.OrderBy(x => Random.Shared.Next()).ToArray();
4746
}
4847

4948
class TodoItem

src/DataProtection/DataProtection/src/KeyManagement/KeyRingProvider.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,12 @@ private static TimeSpan GetRefreshPeriodWithJitter(TimeSpan refreshPeriod)
259259
// hit a single repository simultaneously. For instance, if the refresh period is 1 hour,
260260
// we'll return a value in the vicinity of 48 - 60 minutes. We use the Random class since
261261
// we don't need a secure PRNG for this.
262-
return TimeSpan.FromTicks((long)(refreshPeriod.Ticks * (1.0d - (new Random().NextDouble() / 5))));
262+
#if NET6_0_OR_GREATER
263+
var random = Random.Shared;
264+
#else
265+
var random = new Random();
266+
#endif
267+
return TimeSpan.FromTicks((long)(refreshPeriod.Ticks * (1.0d - (random.NextDouble() / 5))));
263268
}
264269

265270
private static DateTimeOffset Min(DateTimeOffset a, DateTimeOffset b)

src/Http/Routing/test/UnitTests/RouteCollectionTest.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -512,8 +512,7 @@ private static RouteCollection GetRouteCollectionWithNamedRoutes(IEnumerable<str
512512

513513
private static RouteCollection GetNestedRouteCollection(string[] routeNames)
514514
{
515-
var random = new Random();
516-
int index = random.Next(0, routeNames.Length - 1);
515+
int index = Random.Shared.Next(0, routeNames.Length - 1);
517516
var first = routeNames.Take(index).ToArray();
518517
var second = routeNames.Skip(index).ToArray();
519518

src/Identity/Specification.Tests/src/UserManagerSpecificationTests.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -305,9 +305,8 @@ public async Task CheckSetEmailValidatesUser()
305305
var manager = CreateManager();
306306
manager.Options.User.RequireUniqueEmail = true;
307307
manager.UserValidators.Add(new UserValidator<TUser>());
308-
var random = new Random();
309-
var email = "foo" + random.Next() + "@example.com";
310-
var newEmail = "bar" + random.Next() + "@example.com";
308+
var email = "foo" + Random.Shared.Next() + "@example.com";
309+
var newEmail = "bar" + Random.Shared.Next() + "@example.com";
311310
var user = CreateTestUser(email: email);
312311
IdentityResultAssert.IsSuccess(await manager.CreateAsync(user));
313312
IdentityResultAssert.IsSuccess(await manager.SetEmailAsync(user, newEmail));

src/Middleware/HeaderPropagation/samples/HeaderPropagationSample/Startup.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,10 @@ private static StringValues GenerateBetaFeatureOptions()
111111

112112
var threshold = 0.80; // 20% chance for each feature in beta.
113113

114-
var random = new Random();
115114
var values = new List<string>();
116115
for (var i = 0; i < features.Length; i++)
117116
{
118-
if (random.NextDouble() > threshold)
117+
if (Random.Shared.NextDouble() > threshold)
119118
{
120119
values.Add(features[i]);
121120
}

src/Mvc/perf/Microbenchmarks/Microsoft.AspNetCore.Mvc/HelperPerformanceBenchmark.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ namespace Microsoft.AspNetCore.Mvc.Microbenchmarks
3434
{
3535
public class HelperPerformanceBenchmark : RuntimePerformanceBenchmarkBase
3636
{
37-
private Random _rand = new Random();
3837
public HelperPerformanceBenchmark() : base(
3938
"~/Views/HelperTyped.cshtml",
4039
"~/Views/HelperDynamic.cshtml",
@@ -45,6 +44,6 @@ public HelperPerformanceBenchmark() : base(
4544
{
4645
}
4746

48-
protected override object Model => _rand.Next().ToString(CultureInfo.InvariantCulture);
47+
protected override object Model => Random.Shared.Next().ToString(CultureInfo.InvariantCulture);
4948
}
5049
}

src/ProjectTemplates/Web.ProjectTemplates/content/BlazorServerWeb-CSharp/Data/WeatherForecastService.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@ public class WeatherForecastService
1313

1414
public Task<WeatherForecast[]> GetForecastAsync(DateTime startDate)
1515
{
16-
var rng = new Random();
1716
return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast
1817
{
1918
Date = startDate.AddDays(index),
20-
TemperatureC = rng.Next(-20, 55),
21-
Summary = Summaries[rng.Next(Summaries.Length)]
19+
TemperatureC = Random.Shared.Next(-20, 55),
20+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
2221
}).ToArray());
2322
}
2423
}

src/ProjectTemplates/Web.ProjectTemplates/content/ComponentsWebAssembly-CSharp/Server/Controllers/WeatherForecastController.cs

+6-9
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,11 @@ public async Task<IEnumerable<WeatherForecast>> Get()
6969
throw new HttpRequestException($"Invalid status code in the HttpResponseMessage: {response.StatusCode}: {error}");
7070
}
7171

72-
var rng = new Random();
7372
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
7473
{
7574
Date = DateTime.Now.AddDays(index),
76-
TemperatureC = rng.Next(-20, 55),
77-
Summary = Summaries[rng.Next(Summaries.Length)]
75+
TemperatureC = Random.Shared.Next(-20, 55),
76+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
7877
})
7978
.ToArray();
8079
}
@@ -95,12 +94,11 @@ public async Task<IEnumerable<WeatherForecast>> Get()
9594
HttpContext.VerifyUserHasAnyAcceptedScope(scopeRequiredByApi);
9695
var user = await _graphServiceClient.Me.Request().GetAsync();
9796

98-
var rng = new Random();
9997
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
10098
{
10199
Date = DateTime.Now.AddDays(index),
102-
TemperatureC = rng.Next(-20, 55),
103-
Summary = Summaries[rng.Next(Summaries.Length)]
100+
TemperatureC = Random.Shared.Next(-20, 55),
101+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
104102
})
105103
.ToArray();
106104
}
@@ -117,12 +115,11 @@ public IEnumerable<WeatherForecast> Get()
117115
HttpContext.VerifyUserHasAnyAcceptedScope(scopeRequiredByApi);
118116

119117
#endif
120-
var rng = new Random();
121118
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
122119
{
123120
Date = DateTime.Now.AddDays(index),
124-
TemperatureC = rng.Next(-20, 55),
125-
Summary = Summaries[rng.Next(Summaries.Length)]
121+
TemperatureC = Random.Shared.Next(-20, 55),
122+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
126123
})
127124
.ToArray();
128125
}

src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp/Controllers/WeatherForecastController.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,11 @@ public WeatherForecastController(ILogger<WeatherForecastController> logger)
3232
[HttpGet]
3333
public IEnumerable<WeatherForecast> Get()
3434
{
35-
var rng = new Random();
3635
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
3736
{
3837
Date = DateTime.Now.AddDays(index),
39-
TemperatureC = rng.Next(-20, 55),
40-
Summary = Summaries[rng.Next(Summaries.Length)]
38+
TemperatureC = Random.Shared.Next(-20, 55),
39+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
4140
})
4241
.ToArray();
4342
}

src/ProjectTemplates/Web.Spa.ProjectTemplates/content/React-CSharp/Controllers/WeatherForecastController.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,11 @@ public WeatherForecastController(ILogger<WeatherForecastController> logger)
3232
[HttpGet]
3333
public IEnumerable<WeatherForecast> Get()
3434
{
35-
var rng = new Random();
3635
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
3736
{
3837
Date = DateTime.Now.AddDays(index),
39-
TemperatureC = rng.Next(-20, 55),
40-
Summary = Summaries[rng.Next(Summaries.Length)]
38+
TemperatureC = Random.Shared.Next(-20, 55),
39+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
4140
})
4241
.ToArray();
4342
}

src/ProjectTemplates/Web.Spa.ProjectTemplates/content/ReactRedux-CSharp/Controllers/WeatherForecastController.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,11 @@ public WeatherForecastController(ILogger<WeatherForecastController> logger)
2626
[HttpGet]
2727
public IEnumerable<WeatherForecast> Get()
2828
{
29-
var rng = new Random();
3029
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
3130
{
3231
Date = DateTime.Now.AddDays(index),
33-
TemperatureC = rng.Next(-20, 55),
34-
Summary = Summaries[rng.Next(Summaries.Length)]
32+
TemperatureC = Random.Shared.Next(-20, 55),
33+
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
3534
})
3635
.ToArray();
3736
}

src/Servers/IIS/IIS/test/Common.FunctionalTests/AspNetCorePortTests.cs

+1-3
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ public class AspNetCorePortTests : IISFunctionalTestBase
2222
private const int _minPort = 1025;
2323
private const int _maxPort = 48000;
2424

25-
private static readonly Random _random = new Random();
26-
2725
public AspNetCorePortTests(PublishedSitesFixture fixture) : base(fixture)
2826
{
2927
}
@@ -144,7 +142,7 @@ private static int GetUnusedRandomPort()
144142

145143
for (var i = 0; i < retries; i++)
146144
{
147-
var port = _random.Next(_minPort, _maxPort);
145+
var port = Random.Shared.Next(_minPort, _maxPort);
148146

149147
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
150148
{

src/Servers/IIS/IIS/test/Common.FunctionalTests/RequestResponseTests.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,6 @@ public async Task ClientDisconnectStress()
672672
{
673673
var maxRequestSize = 1000;
674674
var blockSize = 40;
675-
var random = new Random();
676675
async Task RunRequests()
677676
{
678677
using (var connection = _fixture.CreateTestConnection())
@@ -685,7 +684,7 @@ await connection.Send(
685684
"",
686685
"");
687686

688-
var disconnectAfter = random.Next(maxRequestSize);
687+
var disconnectAfter = Random.Shared.Next(maxRequestSize);
689688
var data = new byte[blockSize];
690689
for (int i = 0; i < disconnectAfter / blockSize; i++)
691690
{

src/Servers/Kestrel/shared/test/MockSystemClock.cs

+1-3
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ namespace Microsoft.AspNetCore.Testing
99
{
1010
public class MockSystemClock : ISystemClock
1111
{
12-
private static Random _random = new Random();
13-
1412
private long _utcNowTicks;
1513

1614
public MockSystemClock()
@@ -41,7 +39,7 @@ public DateTimeOffset UtcNow
4139

4240
private long NextLong(long minValue, long maxValue)
4341
{
44-
return (long)(_random.NextDouble() * (maxValue - minValue) + minValue);
42+
return (long)(Random.Shared.NextDouble() * (maxValue - minValue) + minValue);
4543
}
4644
}
4745
}

src/Servers/Kestrel/stress/Program.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public static void Main(string[] args)
6464
logPath : cmdline.HasOption("-trace") ? cmdline.ValueForOption<string>("-trace") : null,
6565
aspnetLog : cmdline.ValueForOption<bool>("-aspnetlog"),
6666
listOps : cmdline.ValueForOption<bool>("-listOps"),
67-
seed : cmdline.ValueForOption<int?>("-seed") ?? new Random().Next());
67+
seed : cmdline.ValueForOption<int?>("-seed") ?? Random.Shared.Next());
6868
}
6969

7070
private static void Run(int concurrentRequests, int maxContentLength, Version[] httpVersions, int? connectionLifetime, int[] opIndices, string logPath, bool aspnetLog, bool listOps, int seed)

src/SignalR/common/SignalR.Common/test/Internal/Protocol/MemoryBufferWriterTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ public void GetMemoryAllocatesNewSegmentWhenInsufficientSpaceInCurrentSegment()
405405
using (var bufferWriter = new MemoryBufferWriter(MinimumSegmentSize))
406406
{
407407
var data = new byte[MinimumSegmentSize];
408-
new Random().NextBytes(data);
408+
Random.Shared.NextBytes(data);
409409

410410
// Write half the minimum segment size
411411
bufferWriter.Write(data.AsSpan(0, MinimumSegmentSize / 2));

src/SignalR/perf/Microbenchmarks/MessageParserBenchmark.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ namespace Microsoft.AspNetCore.SignalR.Microbenchmarks
1111
{
1212
public class MessageParserBenchmark
1313
{
14-
private static readonly Random Random = new Random();
1514
private byte[] _binaryInput;
1615
private byte[] _textInput;
1716

@@ -25,7 +24,7 @@ public class MessageParserBenchmark
2524
public void Setup()
2625
{
2726
var buffer = new byte[MessageLength];
28-
Random.NextBytes(buffer);
27+
Random.Shared.NextBytes(buffer);
2928
var writer = MemoryBufferWriter.Get();
3029
try
3130
{
@@ -39,7 +38,7 @@ public void Setup()
3938
}
4039

4140
buffer = new byte[MessageLength];
42-
Random.NextBytes(buffer);
41+
Random.Shared.NextBytes(buffer);
4342
writer = MemoryBufferWriter.Get();
4443
try
4544
{

src/SignalR/samples/JwtClientSample/Program.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ await Task.WhenAll(
2424
private const string ServerUrl = "http://localhost:54543";
2525

2626
private readonly ConcurrentDictionary<string, Task<string>> _tokens = new ConcurrentDictionary<string, Task<string>>(StringComparer.Ordinal);
27-
private readonly Random _random = new Random();
2827

2928
private async Task RunConnection(HttpTransportType transportType)
3029
{
@@ -72,7 +71,7 @@ private async Task RunConnection(HttpTransportType transportType)
7271
if (ticks % nextMsgAt == 0)
7372
{
7473
await hubConnection.SendAsync("Broadcast", userId, $"Hello at {DateTime.Now}");
75-
nextMsgAt = _random.Next(2, 5);
74+
nextMsgAt = Random.Shared.Next(2, 5);
7675
}
7776
}
7877
}

0 commit comments

Comments
 (0)