add forced invoke scan for clearing cache dir, add forced rescan on pause

This commit is contained in:
Stanley Dimant
2022-09-25 14:53:04 +02:00
parent 79b412b00a
commit a02c872307
3 changed files with 11 additions and 4 deletions

View File

@@ -70,8 +70,9 @@ public class PeriodicFileScanner : IDisposable
_scanCancellationTokenSource?.Cancel(); _scanCancellationTokenSource?.Cancel();
} }
public void InvokeScan() public void InvokeScan(bool forced = false)
{ {
bool isForced = forced;
_scanCancellationTokenSource?.Cancel(); _scanCancellationTokenSource?.Cancel();
_scanCancellationTokenSource = new CancellationTokenSource(); _scanCancellationTokenSource = new CancellationTokenSource();
var token = _scanCancellationTokenSource.Token; var token = _scanCancellationTokenSource.Token;
@@ -80,8 +81,9 @@ public class PeriodicFileScanner : IDisposable
while (!token.IsCancellationRequested) while (!token.IsCancellationRequested)
{ {
RecalculateFileCacheSize(); RecalculateFileCacheSize();
if (!_pluginConfiguration.FileScanPaused) if (!_pluginConfiguration.FileScanPaused || isForced)
{ {
isForced = false;
await PeriodicFileScan(token); await PeriodicFileScan(token);
} }
_timeUntilNextScan = TimeSpan.FromSeconds(timeBetweenScans); _timeUntilNextScan = TimeSpan.FromSeconds(timeBetweenScans);

View File

@@ -226,7 +226,7 @@ namespace MareSynchronos.UI
if (ImGui.Button("Start Scan##startScan")) if (ImGui.Button("Start Scan##startScan"))
{ {
_fileCacheManager.InvokeScan(); _fileCacheManager.InvokeScan(true);
} }
} }
else else

View File

@@ -159,6 +159,11 @@ namespace MareSynchronos.UI
else if (_pluginConfiguration.FileScanPaused) else if (_pluginConfiguration.FileScanPaused)
{ {
ImGui.Text("File scanner is paused"); ImGui.Text("File scanner is paused");
ImGui.SameLine();
if (ImGui.Button("Force Rescan##forcedrescan"))
{
_cacheScanner.InvokeScan(true);
}
} }
else else
{ {
@@ -512,7 +517,7 @@ namespace MareSynchronos.UI
public void RecalculateFileCacheSize() public void RecalculateFileCacheSize()
{ {
_cacheScanner.InvokeScan(); _cacheScanner.InvokeScan(true);
} }
public void DrawParallelScansSetting() public void DrawParallelScansSetting()