Skip to content

Commit 9a83f56

Browse files
authored
Fix crash due to wring thread (#4194)
1 parent 2e55513 commit 9a83f56

File tree

4 files changed

+8
-36
lines changed

4 files changed

+8
-36
lines changed

Files/BaseLayout.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,6 @@ internal set
150150

151151
private List<ShellNewEntry> cachedNewContextMenuEntries { get; set; }
152152

153-
private DispatcherQueueController timerQueueController;
154-
155-
private DispatcherQueue timerQueue;
156-
157153
private DispatcherQueueTimer dragOverTimer;
158154

159155
public BaseLayout()
@@ -170,9 +166,7 @@ public BaseLayout()
170166
IsQuickLookEnabled = true;
171167
}
172168

173-
timerQueueController = DispatcherQueueController.CreateOnDedicatedThread();
174-
timerQueue = timerQueueController.DispatcherQueue;
175-
dragOverTimer = timerQueue.CreateTimer();
169+
dragOverTimer = DispatcherQueue.GetForCurrentThread().CreateTimer();
176170
}
177171

178172
protected abstract void InitializeCommandsViewModel();

Files/UserControls/NavigationToolbar.xaml.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -555,20 +555,14 @@ public bool PreviewPaneEnabled
555555

556556
private List<ShellNewEntry> cachedNewContextMenuEntries { get; set; }
557557

558-
private DispatcherQueueController timerQueueController;
559-
560-
private DispatcherQueue timerQueue;
561-
562558
private DispatcherQueueTimer dragOverTimer;
563559

564560
public NavigationToolbar()
565561
{
566562
this.InitializeComponent();
567563
this.Loading += NavigationToolbar_Loading;
568564

569-
timerQueueController = DispatcherQueueController.CreateOnDedicatedThread();
570-
timerQueue = timerQueueController.DispatcherQueue;
571-
dragOverTimer = timerQueue.CreateTimer();
565+
dragOverTimer = DispatcherQueue.GetForCurrentThread().CreateTimer();
572566
}
573567

574568
private async void NavigationToolbar_Loading(FrameworkElement sender, object args)

Files/UserControls/SidebarControl.xaml.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,20 +73,14 @@ public ICommand EmptyRecycleBinCommand
7373
set => SetValue(EmptyRecycleBinCommandProperty, value);
7474
}
7575

76-
private DispatcherQueueController timerQueueController;
77-
78-
private DispatcherQueue timerQueue;
79-
8076
private DispatcherQueueTimer dragOverTimer;
8177

8278
public SidebarControl()
8379
{
8480
this.InitializeComponent();
8581
SidebarNavView.Loaded += SidebarNavView_Loaded;
8682

87-
timerQueueController = DispatcherQueueController.CreateOnDedicatedThread();
88-
timerQueue = timerQueueController.DispatcherQueue;
89-
dragOverTimer = timerQueue.CreateTimer();
83+
dragOverTimer = DispatcherQueue.GetForCurrentThread().CreateTimer();
9084
}
9185

9286
private INavigationControlItem selectedSidebarItem;

Files/Views/LayoutModes/GenericFileBrowser.xaml.cs

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,6 @@ public DataGridColumn SortedColumn
9393
}
9494
}
9595

96-
private DispatcherQueueController timerQueueController;
97-
98-
private DispatcherQueue timerQueue;
99-
10096
private DispatcherQueueTimer tapDebounceTimer;
10197

10298
public GenericFileBrowser()
@@ -111,9 +107,7 @@ public GenericFileBrowser()
111107
selectionRectangle.SelectionEnded += SelectionRectangle_SelectionEnded;
112108
AllView.PointerCaptureLost += AllView_ItemPress;
113109

114-
timerQueueController = DispatcherQueueController.CreateOnDedicatedThread();
115-
timerQueue = timerQueueController.DispatcherQueue;
116-
tapDebounceTimer = timerQueue.CreateTimer();
110+
tapDebounceTimer = DispatcherQueue.GetForCurrentThread().CreateTimer();
117111
}
118112

119113
protected override void InitializeCommandsViewModel()
@@ -307,7 +301,7 @@ private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e
307301

308302
private TextBox renamingTextBox;
309303

310-
private async void AllView_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
304+
private void AllView_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
311305
{
312306
if (ParentShellPageInstance.FilesystemViewModel.WorkingDirectory.StartsWith(AppSettings.RecycleBinPath))
313307
{
@@ -333,16 +327,12 @@ private async void AllView_BeginningEdit(object sender, DataGridBeginningEditEve
333327
// We have an edit due to the first tap in the double-click mode
334328
// Let's wait to see if there is another tap (double click).
335329

336-
tapDebounceTimer.Debounce(async () =>
330+
tapDebounceTimer.Debounce(() =>
337331
{
338-
await CoreApplication.MainView.DispatcherQueue.EnqueueAsync(() =>
339-
{
340-
tapDebounceTimer.Stop();
332+
tapDebounceTimer.Stop();
341333

342-
AllView.BeginEdit();
343-
});
334+
AllView.BeginEdit();
344335
}, TimeSpan.FromMilliseconds(700), false);
345-
346336
}
347337
}
348338
else

0 commit comments

Comments
 (0)