Skip to content

Commit 4091f81

Browse files
committed
Fix wrong percentage assignment + check for thread access
1 parent 2d4efba commit 4091f81

File tree

2 files changed

+43
-11
lines changed

2 files changed

+43
-11
lines changed

CollapseLauncher/XAMLs/MainApp/Pages/CachesPage.xaml.cs

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,22 +180,38 @@ private void RemoveEvent()
180180

181181
private void _cacheTool_StatusChanged(object sender, TotalPerFileStatus e)
182182
{
183-
DispatcherQueue?.TryEnqueue(() =>
183+
if (!DispatcherQueue.HasThreadAccess)
184+
{
185+
DispatcherQueue?.TryEnqueue(Update);
186+
return;
187+
}
188+
189+
Update();
190+
return;
191+
void Update()
184192
{
185193
CachesDataTableGrid.Visibility = e.IsAssetEntryPanelShow ? Visibility.Visible : Visibility.Collapsed;
186-
CachesStatus.Text = e.ActivityStatus;
194+
CachesStatus.Text = e.ActivityStatus;
187195

188-
CachesTotalStatus.Text = e.ActivityAll;
196+
CachesTotalStatus.Text = e.ActivityAll;
189197
CachesTotalProgressBar.IsIndeterminate = e.IsProgressAllIndetermined;
190-
});
198+
}
191199
}
192200

193201
private void _cacheTool_ProgressChanged(object sender, TotalPerFileProgress e)
194202
{
195-
DispatcherQueue?.TryEnqueue(() =>
203+
if (!DispatcherQueue.HasThreadAccess)
204+
{
205+
DispatcherQueue?.TryEnqueue(Update);
206+
return;
207+
}
208+
209+
Update();
210+
return;
211+
void Update()
196212
{
197213
CachesTotalProgressBar.Value = e.ProgressAllPercentage;
198-
});
214+
}
199215
}
200216

201217
private void ResetStatusAndButtonState()

CollapseLauncher/XAMLs/MainApp/Pages/RepairPage.xaml.cs

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,15 @@ private void RemoveEvent()
182182

183183
private void _repairTool_StatusChanged(object sender, TotalPerFileStatus e)
184184
{
185-
DispatcherQueue?.TryEnqueue(() =>
185+
if (!DispatcherQueue.HasThreadAccess)
186+
{
187+
DispatcherQueue?.TryEnqueue(Update);
188+
return;
189+
}
190+
191+
Update();
192+
return;
193+
void Update()
186194
{
187195
RepairDataTableGrid.Visibility = e.IsAssetEntryPanelShow ? Visibility.Visible : Visibility.Collapsed;
188196
RepairStatus.Text = e.ActivityStatus;
@@ -191,16 +199,24 @@ private void _repairTool_StatusChanged(object sender, TotalPerFileStatus e)
191199
RepairTotalStatus.Text = e.ActivityAll;
192200
RepairTotalProgressBar.IsIndeterminate = e.IsProgressAllIndetermined;
193201
RepairPerFileProgressBar.IsIndeterminate = e.IsProgressPerFileIndetermined;
194-
});
202+
};
195203
}
196204

197205
private void _repairTool_ProgressChanged(object sender, TotalPerFileProgress e)
198206
{
199-
DispatcherQueue?.TryEnqueue(() =>
207+
if (!DispatcherQueue.HasThreadAccess)
208+
{
209+
DispatcherQueue?.TryEnqueue(Update);
210+
return;
211+
}
212+
213+
Update();
214+
return;
215+
void Update()
200216
{
201217
RepairPerFileProgressBar.Value = Math.Min(e.ProgressPerFilePercentage, 100);
202-
RepairTotalProgressBar.Value = Math.Min(e.ProgressPerFilePercentage, 100);
203-
});
218+
RepairTotalProgressBar.Value = Math.Min(e.ProgressAllPercentage, 100);
219+
};
204220
}
205221

206222
private void ResetStatusAndButtonState()

0 commit comments

Comments
 (0)