public async void StartListener(CancellationToken cancellationToken) { try { await Task.Run(async() => { while (await displayChannelReader.WaitToReadAsync(cancellationToken)) { Native.DisplayChannelMessage message = await displayChannelReader.ReadAsync(cancellationToken); await Task.Delay(DisplayChangeProcessingDelay, cancellationToken); ProcessMessage(message); } }); } catch (OperationCanceledException) { } }
private void ProcessMessage(Native.DisplayChannelMessage message) { DisplaysChanged?.Invoke(this, new DisplaysChangedEventArgs(GetDisplays(), GetPrimaryDisplay())); }