@@ -72,15 +72,31 @@ private static HashSet<string> GetOptionIds(string option)
7272 #endregion
7373
7474 private static HashSet < string > _foundIds ;
75+ private static bool _isDisplayMonitorAvailable = true ; // Default
76+
77+ private static async Task < DisplayMonitorProvider . DisplayItem [ ] > GetDisplayMonitorsAsync ( )
78+ {
79+ if ( OsVersion . Is10Build17134OrGreater && _isDisplayMonitorAvailable )
80+ {
81+ try
82+ {
83+ return await DisplayMonitorProvider . GetDisplayMonitorsAsync ( ) ;
84+ }
85+ catch ( FileNotFoundException )
86+ {
87+ _isDisplayMonitorAvailable = false ;
88+ }
89+ }
90+ return null ;
91+ }
7592
7693 public static async Task < IEnumerable < IMonitor > > EnumerateMonitorsAsync ( TimeSpan timeout , CancellationToken cancellationToken = default )
7794 {
7895 var deviceItems = DeviceContext . EnumerateMonitorDevices ( ) . ToArray ( ) ;
7996 _foundIds = new HashSet < string > ( deviceItems . Select ( x => x . DeviceInstanceId ) ) ;
8097
81- IDisplayItem [ ] displayItems = OsVersion . Is10Build17134OrGreater
82- ? await DisplayMonitorProvider . GetDisplayMonitorsAsync ( )
83- : DisplayConfig . EnumerateDisplayConfigs ( ) . ToArray ( ) ;
98+ IDisplayItem [ ] displayItems = await GetDisplayMonitorsAsync ( ) ;
99+ displayItems ??= DisplayConfig . EnumerateDisplayConfigs ( ) . ToArray ( ) ;
84100
85101 IEnumerable < BasicItem > EnumerateBasicItems ( )
86102 {
@@ -341,10 +357,7 @@ public async Task PopulateAsync()
341357 DeviceItems = DeviceContext . EnumerateMonitorDevices ( ) . ToArray ( ) ) ,
342358
343359 GetTask ( nameof ( DisplayMonitorItems ) , async ( ) =>
344- {
345- if ( OsVersion . Is10Build17134OrGreater )
346- DisplayMonitorItems = await DisplayMonitorProvider . GetDisplayMonitorsAsync ( ) ;
347- } ) ,
360+ DisplayMonitorItems = await GetDisplayMonitorsAsync ( ) ) ,
348361
349362 GetTask ( nameof ( DisplayConfigItems ) , ( ) =>
350363 DisplayConfigItems = DisplayConfig . EnumerateDisplayConfigs ( ) . ToArray ( ) ) ,
0 commit comments