Skip to content

Commit 8a84f58

Browse files
committed
fix: solve speedchart error
1 parent b4d74b9 commit 8a84f58

1 file changed

Lines changed: 70 additions & 19 deletions

File tree

TelegramDownloader/Pages/Partials/SpeedChart.razor

Lines changed: 70 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@
328328
public string Height { get; set; } = "250px";
329329

330330
private bool chartInitialized = false;
331+
private bool _disposed = false;
331332

332333
protected override async Task OnInitializedAsync()
333334
{
@@ -339,29 +340,65 @@
339340
{
340341
if (firstRender)
341342
{
342-
await InitializeChart();
343-
chartInitialized = true;
344-
await LoadInitialData();
343+
try
344+
{
345+
await InitializeChart();
346+
chartInitialized = true;
347+
await LoadInitialData();
348+
}
349+
catch (TaskCanceledException)
350+
{
351+
// Circuit disconnected, ignore
352+
}
353+
catch (Microsoft.JSInterop.JSDisconnectedException)
354+
{
355+
// Circuit disconnected, ignore
356+
}
345357
}
346358
}
347359

348360
private async void OnNewSpeedHistoryPoint(object? sender, SpeedHistoryEventArgs e)
349361
{
350-
if (chartInitialized)
362+
if (_disposed || !chartInitialized)
363+
return;
364+
365+
try
366+
{
367+
await InvokeAsync(async () =>
368+
{
369+
if (!_disposed)
370+
{
371+
await AddSinglePoint(e.DownloadPoint, e.UploadPoint);
372+
}
373+
});
374+
}
375+
catch (TaskCanceledException)
376+
{
377+
// Circuit disconnected, ignore
378+
}
379+
catch (Microsoft.JSInterop.JSDisconnectedException)
380+
{
381+
// Circuit disconnected, ignore
382+
}
383+
catch (ObjectDisposedException)
351384
{
352-
await InvokeAsync(async () => await AddSinglePoint(e.DownloadPoint, e.UploadPoint));
385+
// Component disposed, ignore
353386
}
354387
}
355388

356389
private async Task InitializeChart()
357390
{
391+
if (_disposed) return;
392+
358393
int maxPoints = TransactionInfoService.MAX_SPEED_HISTORY_SECONDS / TransactionInfoService.INTERVAL_SPEED_HISTORY_SECONDS;
359394
int intervalSeconds = TransactionInfoService.INTERVAL_SPEED_HISTORY_SECONDS;
360395
await JS.InvokeVoidAsync("initSpeedChart", maxPoints, intervalSeconds);
361396
}
362397

363398
private async Task LoadInitialData()
364399
{
400+
if (_disposed) return;
401+
365402
var downloadHistory = tis.GetDownloadSpeedsHistoryCopy();
366403
var uploadHistory = tis.GetUploadSpeedsHistoryCopy();
367404

@@ -388,25 +425,39 @@
388425

389426
private async Task AddSinglePoint(SpeedHistory downloadPoint, SpeedHistory uploadPoint)
390427
{
391-
var download = new {
392-
time = downloadPoint.time.ToString("HH:mm:ss"),
393-
datetime = downloadPoint.time.ToString("dd/MM/yyyy HH:mm:ss"),
394-
speed = downloadPoint.speed / 1024.0 / 1024.0,
395-
files = downloadPoint.activeFiles
396-
};
397-
398-
var upload = new {
399-
time = uploadPoint.time.ToString("HH:mm:ss"),
400-
datetime = uploadPoint.time.ToString("dd/MM/yyyy HH:mm:ss"),
401-
speed = uploadPoint.speed / 1024.0 / 1024.0,
402-
files = uploadPoint.activeFiles
403-
};
428+
if (_disposed) return;
404429

405-
await JS.InvokeVoidAsync("addSpeedChartPoint", download, upload);
430+
try
431+
{
432+
var download = new {
433+
time = downloadPoint.time.ToString("HH:mm:ss"),
434+
datetime = downloadPoint.time.ToString("dd/MM/yyyy HH:mm:ss"),
435+
speed = downloadPoint.speed / 1024.0 / 1024.0,
436+
files = downloadPoint.activeFiles
437+
};
438+
439+
var upload = new {
440+
time = uploadPoint.time.ToString("HH:mm:ss"),
441+
datetime = uploadPoint.time.ToString("dd/MM/yyyy HH:mm:ss"),
442+
speed = uploadPoint.speed / 1024.0 / 1024.0,
443+
files = uploadPoint.activeFiles
444+
};
445+
446+
await JS.InvokeVoidAsync("addSpeedChartPoint", download, upload);
447+
}
448+
catch (TaskCanceledException)
449+
{
450+
// Circuit disconnected, ignore
451+
}
452+
catch (Microsoft.JSInterop.JSDisconnectedException)
453+
{
454+
// Circuit disconnected, ignore
455+
}
406456
}
407457

408458
public void Dispose()
409459
{
460+
_disposed = true;
410461
tis.NewSpeedHistoryPoint -= OnNewSpeedHistoryPoint;
411462
}
412463
}

0 commit comments

Comments
 (0)