C# Exception aus Fire and Forget Task behandeln?

Ich versuche mit Selenium eine Website zu überwachen und damit zu interagieren. Dafür gibt es eine Liste mit Dingen die überwacht werden sollen und eine Liste mit Observern die dafür zur Verfügung stehen. Bei dem überwachen können gelegentlich Fehler auftreten, z.B. wenn Chrome crashed. Dann soll alles neu gestartet werden. So sieht es aktuell aus:

        public async Task Observe(List<string> objectsToObserve, CancellationToken token)
        {
            Exception exception = null;
            var objectsQueue = new Queue<string>(objectsToObserve);
            var observerQueue = new Queue<Observer>(_observers);
            while (true)
            {
                while (!observerQueue.Any())
                {
                    await Task.Delay(10);
                }
                if (exception is not null)
                    throw exception ;
                if (token.IsCancellationRequested)
                    return;
                var objectToObserve = objectsQueue.Dequeue();
                var observer = observerQueue.Dequeue();
                _ = observer.Observe(objectToObserve).ContinueWith(x =>
                {
                    if (x.IsFaulted)
                        exception = x.Exception;
                    objectsQueue.Enqueue(objectToObserve);
                    observerQueue.Enqueue(observer);
                });
            }
        }  

Wenn dieser Task ne Exception wirft, wird neugestartet. Da das observen aber nicht awaitet wird, weil mehrere davon parallel laufen sollen, kann ich die Exception nicht richtig behandeln. Geht das irgendwie besser?

Computer, Schule, programmieren, C Sharp

Meistgelesene Fragen zum Thema C Sharp