@@ -21,29 +21,38 @@ private async Task OpenTargetWindowCoreAsync(IntPtr targetWindowHandle, string n
2121 {
2222 using var l = await this . asyncLock . EnterAsync ( ) ;
2323 var scope = provider . CreateScope ( ) ;
24- var options = scope . ServiceProvider . GetRequiredService < IOptionsSnapshot < UserSettings > > ( ) ;
25- var presentationService = scope . ServiceProvider . GetRequiredService < IPresentationService > ( ) ;
26- var processInfo = scope . ServiceProvider . GetRequiredService < IProcessInfoStoreInternal > ( ) ;
27- processInfo . SetTargetProcess ( targetWindowHandle , name ) ;
28-
29- if ( ! options . Value . Targets . ContainsKey ( name ) && ! await presentationService . OpenAllSettingsDialogAsync ( name ) )
24+ try
3025 {
31- return ;
32- }
3326
34- var window = options . Value . Common . ViewMode switch
35- {
36- ViewMode . Capture => await presentationService . OpenCaptureMainWindowAsync ( ) ,
37- ViewMode . Overlay => await presentationService . OpenOverlayMainWindowAsync ( ) ,
38- _ => throw new NotSupportedException ( ) ,
39- } ;
40- var info = new WindowInfo ( name , targetWindowHandle , window ) ;
41- window . Closed += ( _ , _ ) =>
27+ var options = scope . ServiceProvider . GetRequiredService < IOptionsSnapshot < UserSettings > > ( ) ;
28+ var presentationService = scope . ServiceProvider . GetRequiredService < IPresentationService > ( ) ;
29+ var processInfo = scope . ServiceProvider . GetRequiredService < IProcessInfoStoreInternal > ( ) ;
30+ processInfo . SetTargetProcess ( targetWindowHandle , name ) ;
31+
32+ if ( ! options . Value . Targets . ContainsKey ( name ) && ! await presentationService . OpenAllSettingsDialogAsync ( name ) )
33+ {
34+ return ;
35+ }
36+
37+ var window = options . Value . Common . ViewMode switch
38+ {
39+ ViewMode . Capture => await presentationService . OpenCaptureMainWindowAsync ( ) ,
40+ ViewMode . Overlay => await presentationService . OpenOverlayMainWindowAsync ( ) ,
41+ _ => throw new NotSupportedException ( ) ,
42+ } ;
43+ var info = new WindowInfo ( name , targetWindowHandle , window ) ;
44+ window . Closed += ( _ , _ ) =>
45+ {
46+ scope . Dispose ( ) ;
47+ this . OpenedWindows . Remove ( info ) ;
48+ } ;
49+ this . OpenedWindows . Add ( info ) ;
50+ }
51+ catch ( Exception )
4252 {
4353 scope . Dispose ( ) ;
44- this . OpenedWindows . Remove ( info ) ;
45- } ;
46- this . OpenedWindows . Add ( info ) ;
54+ throw ;
55+ }
4756 }
4857
4958 public void Dispose ( )
0 commit comments