change downloads to concurrentdictionary

This commit is contained in:
Stanley Dimant
2022-09-06 13:39:33 +02:00
parent 5c480f551b
commit 94ff918881
4 changed files with 10 additions and 5 deletions

View File

@@ -146,6 +146,7 @@ public class CachedPlayer
{
Logger.Debug("Downloading missing files for player " + PlayerName + ", kind: " + objectKind);
await _apiController.DownloadFiles(downloadId, toDownloadReplacements, downloadToken);
_apiController.CancelDownload(downloadId);
if (downloadToken.IsCancellationRequested)
{
Logger.Verbose("Detected cancellation");

View File

@@ -367,7 +367,7 @@ namespace MareSynchronos.UI
if (currentDownloads.Any())
{
var totalDownloads = currentDownloads.Count;
var totalDownloads = currentDownloads.Count();
var doneDownloads = currentDownloads.Count(c => c.IsTransferred);
var totalDownloaded = currentDownloads.Sum(c => c.Transferred);
var totalToDownload = currentDownloads.Sum(c => c.Total);

View File

@@ -95,7 +95,7 @@ namespace MareSynchronos.WebAPI
{
File.Delete(tempFile);
Logger.Debug("Detected cancellation, removing " + currentDownloadId);
CurrentDownloads.Remove(currentDownloadId);
CancelDownload(currentDownloadId);
break;
}
@@ -132,7 +132,7 @@ namespace MareSynchronos.WebAPI
}
Logger.Debug("Download complete, removing " + currentDownloadId);
CurrentDownloads.Remove(currentDownloadId);
CancelDownload(currentDownloadId);
}
public async Task PushCharacterData(CharacterCacheDto character, List<string> visibleCharacterIds)
@@ -288,7 +288,10 @@ namespace MareSynchronos.WebAPI
public void CancelDownload(int downloadId)
{
CurrentDownloads.Remove(downloadId);
while (CurrentDownloads.ContainsKey(downloadId))
{
CurrentDownloads.TryRemove(downloadId, out _);
}
}
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
@@ -93,7 +94,7 @@ namespace MareSynchronos.WebAPI
public event SimpleStringDelegate? UnpairedFromOther;
public Dictionary<int, List<DownloadFileTransfer>> CurrentDownloads { get; } = new();
public ConcurrentDictionary<int, List<DownloadFileTransfer>> CurrentDownloads { get; } = new();
public List<FileTransfer> CurrentUploads { get; } = new();