[App] Ensure DAT importer model events run on UI thread.

This commit is contained in:
2025-07-29 16:38:59 +01:00
parent 0903d2b5cc
commit 5d1ef578a1

View File

@@ -1,6 +1,7 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Avalonia.Media; using Avalonia.Media;
using Avalonia.Threading;
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.ComponentModel;
using RomRepoMgr.Core.EventArgs; using RomRepoMgr.Core.EventArgs;
@@ -24,7 +25,7 @@ public partial class DatImporter : ObservableObject
public Task Task { get; set; } public Task Task { get; set; }
public bool Running { get; private set; } = true; public bool Running { get; private set; } = true;
internal void OnErrorOccurred(object sender, ErrorEventArgs e) internal void OnErrorOccurred(object sender, ErrorEventArgs e) => Dispatcher.UIThread.Post(() =>
{ {
StatusMessage = e.Message; StatusMessage = e.Message;
StatusColor = Colors.Red; StatusColor = Colors.Red;
@@ -33,31 +34,25 @@ public partial class DatImporter : ObservableObject
Indeterminate = false; Indeterminate = false;
Progress = 0; Progress = 0;
} });
internal void OnSetIndeterminateProgress(object sender, EventArgs e) internal void OnSetIndeterminateProgress(object sender, EventArgs e) =>
{ Dispatcher.UIThread.Post(() => Indeterminate = true);
Indeterminate = true;
}
internal void OnSetMessage(object sender, MessageEventArgs e) internal void OnSetMessage(object sender, MessageEventArgs e) =>
{ Dispatcher.UIThread.Post(() => StatusMessage = e.Message);
StatusMessage = e.Message;
}
internal void OnSetProgress(object sender, ProgressEventArgs e) internal void OnSetProgress(object sender, ProgressEventArgs e) =>
{ Dispatcher.UIThread.Post(() => Progress = e.Value);
Progress = e.Value;
}
internal void OnSetProgressBounds(object sender, ProgressBoundsEventArgs e) internal void OnSetProgressBounds(object sender, ProgressBoundsEventArgs e) => Dispatcher.UIThread.Post(() =>
{ {
Indeterminate = false; Indeterminate = false;
Maximum = e.Maximum; Maximum = e.Maximum;
Minimum = e.Minimum; Minimum = e.Minimum;
} });
internal void OnWorkFinished(object sender, MessageEventArgs e) internal void OnWorkFinished(object sender, MessageEventArgs e) => Dispatcher.UIThread.Post(() =>
{ {
Indeterminate = false; Indeterminate = false;
Maximum = 1; Maximum = 1;
@@ -65,5 +60,5 @@ public partial class DatImporter : ObservableObject
Progress = 1; Progress = 1;
StatusMessage = e.Message; StatusMessage = e.Message;
Running = false; Running = false;
} });
} }