Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/Xamarin.PropertyEditing.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Karlaš <david.karlas@gmail.com>2020-09-10 11:51:10 +0300
committerDavid Karlaš <david.karlas@gmail.com>2020-09-10 11:51:10 +0300
commitefe64a425f9f60776a4feaf52375cbfe1f4720db (patch)
tree6d9d408490f6a0e4c88f965ebee8ca34b61a8b9a
parent2a1b772c42cb3972708cfdc5ca28cc60d1836641 (diff)
-rw-r--r--Xamarin.PropertyEditing/AsyncWorkQueue.cs8
1 files changed, 4 insertions, 4 deletions
diff --git a/Xamarin.PropertyEditing/AsyncWorkQueue.cs b/Xamarin.PropertyEditing/AsyncWorkQueue.cs
index 9d47e4a..2956eef 100644
--- a/Xamarin.PropertyEditing/AsyncWorkQueue.cs
+++ b/Xamarin.PropertyEditing/AsyncWorkQueue.cs
@@ -16,15 +16,15 @@ namespace Xamarin.PropertyEditing
var worker = new AsyncValueWorker (requester, this);
this.workers.AddLast (worker.Node);
- if (this.workers.Count == 1 || ReferenceEquals (requester, this.activeRequester)) {
+ if (this.workers.Count == 1 || (this.activeRequester.TryGetTarget (out var target) && ReferenceEquals (requester, target))) {
worker.Completion.SetResult (worker);
- this.activeRequester = requester;
+ this.activeRequester.SetTarget (requester);
}
return worker.Completion.Task;
}
- private object activeRequester;
+ private WeakReference<object> activeRequester;
private readonly LinkedList<AsyncValueWorker> workers = new LinkedList<AsyncValueWorker>();
private void CompleteWork (AsyncValueWorker worker)
@@ -63,7 +63,7 @@ namespace Xamarin.PropertyEditing
this.workers.Remove (worker);
if (toFree != null) {
- this.activeRequester = toFree.Requester;
+ this.activeRequester.SetTarget (toFree.Requester);
toFree.Completion.SetResult (toFree);
if (related != null) {