private async Task CommunicationThreadImpl() { await appUpdater.Start(); try { foreach (var message in messageQueue.GetConsumingEnumerable(cancellationToken)) { this.appUpdater.Update((dynamic)message); } } catch (OperationCanceledException) { Debug.Log("Communication thread was cancelled."); } catch (ThreadAbortException ex) { Debug.Log($"The thread has been aborted: {ex}"); } catch (Exception ex) { Debug.LogError(ex); } }