Skip to content

Commit 02971da

Browse files
committed
Only update drives collection from UI Thread
1 parent 575790c commit 02971da

File tree

1 file changed

+25
-14
lines changed

1 file changed

+25
-14
lines changed

Files/Filesystem/Drives.cs

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -53,24 +53,35 @@ public DrivesManager()
5353

5454
private async void DeviceWatcher_EnumerationCompleted(DeviceWatcher sender, object args)
5555
{
56-
if(App.sideBarItems.FirstOrDefault(x => x is HeaderTextItem && x.Text == "Drives") == null)
57-
{
58-
App.sideBarItems.Add(new HeaderTextItem() { Text = "Drives" });
59-
}
60-
foreach (DriveItem drive in Drives)
56+
// Only update collection from UI-thread
57+
try
6158
{
62-
if (!App.sideBarItems.Contains(drive))
59+
await CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
6360
{
64-
App.sideBarItems.Add(drive);
65-
}
66-
}
61+
if (App.sideBarItems.FirstOrDefault(x => x is HeaderTextItem && x.Text == "Drives") == null)
62+
{
63+
App.sideBarItems.Add(new HeaderTextItem() { Text = "Drives" });
64+
}
65+
foreach (DriveItem drive in Drives)
66+
{
67+
if (!App.sideBarItems.Contains(drive))
68+
{
69+
App.sideBarItems.Add(drive);
70+
}
71+
}
6772

68-
foreach(INavigationControlItem item in App.sideBarItems.ToList())
73+
foreach (INavigationControlItem item in App.sideBarItems.ToList())
74+
{
75+
if (item is DriveItem && !Drives.Contains(item))
76+
{
77+
App.sideBarItems.Remove(item);
78+
}
79+
}
80+
});
81+
}
82+
catch (Exception)
6983
{
70-
if(item is DriveItem && !Drives.Contains(item))
71-
{
72-
App.sideBarItems.Remove(item);
73-
}
84+
// UI thread not created yet?
7485
}
7586
}
7687

0 commit comments

Comments
 (0)