Skip to content

Commit 930fdb5

Browse files
committed
Minor fixes
1 parent 37433fe commit 930fdb5

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

Files/Helpers/AsyncManualResetEvent.cs

+10-7
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@ public class AsyncManualResetEvent
1111
{
1212
private volatile TaskCompletionSource<bool> m_tcs = new TaskCompletionSource<bool>();
1313

14-
public Task WaitAsync(CancellationToken cancellationToken = default)
14+
public async Task WaitAsync(CancellationToken cancellationToken = default)
1515
{
1616
var tcs = m_tcs;
17+
var cancelTcs = new TaskCompletionSource<bool>();
18+
1719
cancellationToken.Register(
18-
s => ((TaskCompletionSource<bool>)s).TrySetCanceled(), tcs);
20+
s => ((TaskCompletionSource<bool>)s).TrySetCanceled(), cancelTcs);
1921

20-
return m_tcs.Task;
22+
await await Task.WhenAny(tcs.Task, cancelTcs.Task);
2123
}
2224

2325
private async Task<bool> Delay(int milliseconds)
@@ -26,15 +28,15 @@ private async Task<bool> Delay(int milliseconds)
2628
return false;
2729
}
2830

29-
public Task<bool> WaitAsync(int milliseconds, CancellationToken cancellationToken = default)
31+
public async Task<bool> WaitAsync(int milliseconds, CancellationToken cancellationToken = default)
3032
{
3133
var tcs = m_tcs;
34+
var cancelTcs = new TaskCompletionSource<bool>();
3235

3336
cancellationToken.Register(
34-
s => ((TaskCompletionSource<bool>)s).TrySetCanceled(), tcs);
35-
37+
s => ((TaskCompletionSource<bool>)s).TrySetCanceled(), cancelTcs);
3638

37-
return Task.WhenAny(m_tcs.Task, Delay(milliseconds)).Result;
39+
return await await Task.WhenAny(m_tcs.Task, cancelTcs.Task, Delay(milliseconds));
3840
}
3941

4042
public void Set()
@@ -43,6 +45,7 @@ public void Set()
4345
Task.Factory.StartNew(s => ((TaskCompletionSource<bool>)s).TrySetResult(true),
4446
tcs, CancellationToken.None, TaskCreationOptions.PreferFairness, TaskScheduler.Default);
4547
tcs.Task.Wait();
48+
4649
}
4750

4851
public void Reset()

Files/ViewModels/ItemViewModel.cs

+4-2
Original file line numberDiff line numberDiff line change
@@ -909,11 +909,13 @@ public async Task LoadExtendedItemProperties(ListedItem item, uint thumbnailSize
909909
item.ItemPropertiesInitialized = true;
910910
itemLoadQueue[item.ItemPath] = false;
911911

912+
var cts = loadPropsCTS;
913+
912914
try
913915
{
914916
await Task.Run(async () =>
915917
{
916-
await loadPropsEvent.WaitAsync(loadPropsCTS.Token);
918+
await loadPropsEvent.WaitAsync(cts.Token);
917919

918920
if (itemLoadQueue.TryGetValue(item.ItemPath, out var canceled) && canceled)
919921
{
@@ -1039,7 +1041,7 @@ await FilesystemTasks.Wrap(() => CoreApplication.MainView.DispatcherQueue.Enqueu
10391041
}));
10401042
}
10411043
}
1042-
}, loadPropsCTS.Token);
1044+
}, cts.Token);
10431045
}
10441046
catch (OperationCanceledException)
10451047
{

0 commit comments

Comments
 (0)