Skip to content

Commit c11d78c

Browse files
committed
Fix dispatcher thread issue in dependency injection
1 parent 022cad0 commit c11d78c

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

Flow.Launcher/App.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ await Stopwatch.NormalAsync("|App.OnStartup|Startup cost", async () =>
102102
await imageLoadertask;
103103

104104
var mainVM = Ioc.Default.GetRequiredService<MainViewModel>();
105+
((PublicAPIInstance)API).Initialize(mainVM);
105106
var window = new MainWindow(_settings, mainVM);
106-
107107
Log.Info($"|App.OnStartup|Dependencies Info:{ErrorReporting.DependenciesInfo()}");
108108

109109
Current.MainWindow = window;

Flow.Launcher/PublicAPIInstance.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,22 @@ namespace Flow.Launcher
3434
public class PublicAPIInstance : IPublicAPI
3535
{
3636
private readonly Settings _settings;
37-
private readonly MainViewModel _mainVM;
37+
private MainViewModel _mainVM;
3838

39-
#region Constructor
39+
#region Constructor & Initialization
4040

41-
public PublicAPIInstance(Settings settings, MainViewModel mainVM)
41+
public PublicAPIInstance(Settings settings)
4242
{
4343
_settings = settings;
44-
_mainVM = mainVM;
4544
GlobalHotkey.hookedKeyboardCallback = KListener_hookedKeyboardCallback;
4645
WebRequest.RegisterPrefix("data", new DataWebRequestFactory());
4746
}
47+
48+
// We must initialize mainVM later to avoid dispatcher thread issue
49+
public void Initialize(MainViewModel mainVM)
50+
{
51+
_mainVM = mainVM;
52+
}
4853

4954
#endregion
5055

0 commit comments

Comments
 (0)