Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Commit 07709df

Browse files
Add TestStage.Stopped
1 parent 6461a0c commit 07709df

2 files changed

Lines changed: 22 additions & 10 deletions

File tree

src/SpeedTestSharp/Client/SpeedTestClient.cs

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace SpeedTestSharp.Client
1717
{
1818
public class SpeedTestClient : ISpeedTestClient
1919
{
20-
public TestStage CurrentStage { get; private set; } = TestStage.Prepare;
20+
public TestStage CurrentStage { get; private set; } = TestStage.Stopped;
2121
public SpeedUnit SpeedUnit { get; private set; } = SpeedUnit.Kbps;
2222

2323
public event EventHandler<TestStage>? StageChanged;
@@ -29,20 +29,31 @@ public async Task<SpeedTestResult> TestSpeedAsync(SpeedUnit speedUnit,
2929
bool testDownload = true,
3030
bool testUpload = true)
3131
{
32+
if (CurrentStage != TestStage.Stopped)
33+
{
34+
throw new InvalidOperationException("Speedtest already running");
35+
}
3236
SpeedUnit = speedUnit;
33-
34-
var server = await GetBestServerByLatency();
3537

36-
if (server == null)
38+
try
3739
{
38-
throw new InvalidOperationException("No server was found");
39-
}
40+
var server = await GetBestServerByLatency();
41+
42+
if (server == null)
43+
{
44+
throw new InvalidOperationException("No server was found");
45+
}
4046

41-
var latency = testLatency ? await TestServerLatencyAsync(server) : -1;
42-
var downloadSpeed = testDownload ? await TestDownloadSpeedAsync(server, parallelTasks) : -1;
43-
var uploadSpeed = testUpload ? await TestUploadSpeedAsync(server, parallelTasks) : -1;
47+
var latency = testLatency ? await TestServerLatencyAsync(server) : -1;
48+
var downloadSpeed = testDownload ? await TestDownloadSpeedAsync(server, parallelTasks) : -1;
49+
var uploadSpeed = testUpload ? await TestUploadSpeedAsync(server, parallelTasks) : -1;
4450

45-
return new SpeedTestResult(speedUnit, downloadSpeed, uploadSpeed, latency);
51+
return new SpeedTestResult(speedUnit, downloadSpeed, uploadSpeed, latency);
52+
}
53+
finally
54+
{
55+
SetStage(TestStage.Stopped);
56+
}
4657
}
4758

4859
private async Task<Server?> GetBestServerByLatency()

src/SpeedTestSharp/Enums/TestStage.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ namespace SpeedTestSharp.Enums
22
{
33
public enum TestStage
44
{
5+
Stopped,
56
Prepare,
67
Latency,
78
Download,

0 commit comments

Comments
 (0)