Пример #1
0
 private void RunTracked(CapturedRunnable runnable)
 {
     runnable.Task = runnable.Tracked.RunAsync(runnable.Lifetime.Token).ContinueWith(result =>
     {
         trackedRunnables.TryRemove(runnable.Id, out _);
     });
 }
Пример #2
0
        public bool TryAdd(TId id, TTracked runnable, CancellationToken token = default)
        {
            var lifetime = CancellationTokenSource.CreateLinkedTokenSource(trackerLifetime.Token, token);
            var captured = new CapturedRunnable(id, runnable, lifetime);

            if (!trackedRunnables.TryAdd(id, captured))
            {
                return(false);
            }

            RunTracked(captured);
            return(true);
        }