@@ -58,9 +58,6 @@ public sealed class HubLifetime : IAsyncDisposable
5858 private readonly SemaphoreSlim _liveControlClientsLock = new ( 1 ) ;
5959
6060 private ChannelMessageQueue ? _deviceMsgQueue ;
61- private Task ? _deviceMsgConsumerTask ;
62-
63- private Task ? _updateLoopTask ;
6461
6562 /// <summary>
6663 /// DI Constructor
@@ -166,10 +163,13 @@ public async Task<bool> InitAsync(CancellationToken cancellationToken)
166163 return false ;
167164 }
168165
169- _updateLoopTask = OsTask . Run ( UpdateLoop ) ;
166+ #pragma warning disable CS4014
167+ OsTask . Run ( UpdateLoop ) ;
168+
170169
171170 _deviceMsgQueue = await _subscriber . SubscribeAsync ( _deviceMsgChannel ) ;
172- _deviceMsgConsumerTask = QueueHelper . ConsumeQueue ( _deviceMsgQueue , ConsumeDeviceQueue , _logger , _cancellationSource . Token ) ;
171+ QueueHelper . ConsumeQueue ( _deviceMsgQueue , ConsumeDeviceQueue , _logger , _cancellationSource . Token ) ;
172+ #pragma warning restore CS4014
173173
174174 _state = HubLifetimeState . Idle ; // We are fully setup, we can go back to idle state
175175
@@ -527,18 +527,12 @@ public async ValueTask DisposeAsync()
527527 {
528528 if ( _disposed ) return ;
529529 _disposed = true ;
530-
531- await _subscriber . UnsubscribeAsync ( _deviceMsgChannel ) ;
530+
532531 await _cancellationSource . CancelAsync ( ) ;
533532
534- // ensure the consumer loop ends
535- if ( _deviceMsgConsumerTask is not null )
536- {
537- try { await _deviceMsgConsumerTask ; } catch { /* ignore */ }
538- }
539- if ( _updateLoopTask is not null )
533+ if ( _deviceMsgQueue is not null )
540534 {
541- try { await _updateLoopTask ; } catch { /* ignore */ }
535+ await _deviceMsgQueue . UnsubscribeAsync ( ) ;
542536 }
543537
544538 await DisposeLiveControlClients ( ) ;
0 commit comments