@@ -51,26 +51,63 @@ public DrivesManager()
51
51
} ) ;
52
52
}
53
53
54
- private void DeviceWatcher_EnumerationCompleted ( DeviceWatcher sender , object args )
54
+ private async void DeviceWatcher_EnumerationCompleted ( DeviceWatcher sender , object args )
55
55
{
56
- if ( App . sideBarItems . FirstOrDefault ( x => x is HeaderTextItem && x . Text == ResourceController . GetTranslation ( "SidebarDrives" ) ) == null )
56
+ try
57
57
{
58
- App . sideBarItems . Add ( new HeaderTextItem ( ) { Text = ResourceController . GetTranslation ( "SidebarDrives" ) } ) ;
58
+ await CoreApplication . MainView . Dispatcher . RunAsync ( CoreDispatcherPriority . Low , ( ) =>
59
+ {
60
+ if ( App . sideBarItems . FirstOrDefault ( x => x is HeaderTextItem && x . Text == ResourceController . GetTranslation ( "SidebarDrives" ) ) == null )
61
+ {
62
+ App . sideBarItems . Add ( new HeaderTextItem ( ) { Text = ResourceController . GetTranslation ( "SidebarDrives" ) } ) ;
63
+ }
64
+ foreach ( DriveItem drive in Drives )
65
+ {
66
+ if ( ! App . sideBarItems . Contains ( drive ) )
67
+ {
68
+ App . sideBarItems . Add ( drive ) ;
69
+ }
70
+ }
71
+ foreach ( INavigationControlItem item in App . sideBarItems . ToList ( ) )
72
+ {
73
+ if ( item is DriveItem && ! Drives . Contains ( item ) )
74
+ {
75
+ App . sideBarItems . Remove ( item ) ;
76
+ }
77
+ }
78
+ } ) ;
59
79
}
60
- foreach ( DriveItem drive in Drives )
80
+ catch ( Exception ) // UI Thread not ready yet, so we defer the pervious operation until it is.
61
81
{
62
- if ( ! App . sideBarItems . Contains ( drive ) )
63
- {
64
- App . sideBarItems . Add ( drive ) ;
65
- }
82
+ // Defer because UI-thread is not ready yet (and DriveItem requires it?)
83
+ CoreApplication . MainView . Activated += MainView_Activated ;
66
84
}
67
- foreach ( INavigationControlItem item in App . sideBarItems . ToList ( ) )
85
+ }
86
+
87
+ private async void MainView_Activated ( CoreApplicationView sender , Windows . ApplicationModel . Activation . IActivatedEventArgs args )
88
+ {
89
+ await CoreApplication . MainView . Dispatcher . RunAsync ( CoreDispatcherPriority . Low , ( ) =>
68
90
{
69
- if ( item is DriveItem && ! Drives . Contains ( item ) )
91
+ if ( App . sideBarItems . FirstOrDefault ( x => x is HeaderTextItem && x . Text == ResourceController . GetTranslation ( "SidebarDrives" ) ) == null )
70
92
{
71
- App . sideBarItems . Remove ( item ) ;
93
+ App . sideBarItems . Add ( new HeaderTextItem ( ) { Text = ResourceController . GetTranslation ( "SidebarDrives" ) } ) ;
72
94
}
73
- }
95
+ foreach ( DriveItem drive in Drives )
96
+ {
97
+ if ( ! App . sideBarItems . Contains ( drive ) )
98
+ {
99
+ App . sideBarItems . Add ( drive ) ;
100
+ }
101
+ }
102
+ foreach ( INavigationControlItem item in App . sideBarItems . ToList ( ) )
103
+ {
104
+ if ( item is DriveItem && ! Drives . Contains ( item ) )
105
+ {
106
+ App . sideBarItems . Remove ( item ) ;
107
+ }
108
+ }
109
+ } ) ;
110
+ CoreApplication . MainView . Activated -= MainView_Activated ;
74
111
}
75
112
76
113
private async void DeviceAdded ( DeviceWatcher sender , DeviceInformation args )
0 commit comments