@@ -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 ( )
0 commit comments