示例#1
0
 private Task <WMIAccessService> TryGetAccessAsync(WMIConnectionOption wmiConnectionOption)
 {
     return(Task.Run(async() =>
     {
         WMIAccessService connectedWMIConnectedAccessService = null;
         if (wmiConnectionOption != null)
         {
             try
             {
                 var wmiAccessService = new WMIAccessService();
                 var connected = await wmiAccessService.TryConnectAsync(wmiConnectionOption).ConfigureAwait(false);
                 if (connected)
                 {
                     connectedWMIConnectedAccessService = wmiAccessService;
                 }
             }
             catch (Exception exception)
             {
                 var endPoint = string.IsNullOrEmpty(wmiConnectionOption.EndPoint)
                     ? wmiConnectionOption.DeviceName
                     : wmiConnectionOption.EndPoint;
                 var wmiException = new WMIGeneralException(endPoint, exception);
                 LogEventHandler.Exception(wmiException);
             }
         }
         return connectedWMIConnectedAccessService;
     }));
 }
示例#2
0
        private static async Task Main(string[] args)
        {
            Setup();

            var searchInformationCategories = new[]
            {
                InformationCategory.All
            };

            var devices            = new List <Device>();
            var localAccessService = new WMIAccessService();
            var connected          = await localAccessService.TryConnectAsync().ConfigureAwait(false);

            if (connected)
            {
                var device = await new Device()
                             .WithInformationCategories(searchInformationCategories)
                             .WithWMIAccessService(localAccessService)
                             .InitializeAsync()
                             .ConfigureAwait(false);
                devices.Add(device);

                if (devices.Any())
                {
                    Summarize(devices);
                }
            }
            Console.ReadLine();
        }
示例#3
0
        private async Task <Device> FetchDeviceAsync(InformationType[] searchInformationTypes)
        {
            var localAccessService = new WMIAccessService();
            var connected          = await localAccessService.TryConnectAsync().ConfigureAwait(false);

            connected.Should().BeTrue();
            var device = await new Device()
                         .WithWMIAccessService(localAccessService)
                         .WithInformationTypes(searchInformationTypes)
                         .InitializeAsync()
                         .ConfigureAwait(false);

            _device = device;
            return(device);
        }
示例#4
0
 private async Task <Device> TryGetDeviceAsync(WMIAccessService wmiAccessService, CancellationToken cancellationToken = new CancellationToken(), InformationCategory[] informationCategories = null, params InformationType[] informationTypes)
 {
     if (wmiAccessService != null)
     {
         try
         {
             return(await Task.Run(async() =>
             {
                 try
                 {
                     if (wmiAccessService.Connected)
                     {
                         var device = await new Device()
                                      .WithWMIAccessService(wmiAccessService)
                                      .WithInformationCategories(informationCategories)
                                      .WithInformationTypes(informationTypes)
                                      .WithQueries(Queries)
                                      .InitializeAsync(cancellationToken)
                                      .ConfigureAwait(false);
                         return device;
                     }
                 }
                 catch (OperationCanceledException operationCanceledException)
                 {
                     LogEventHandler.TaskIncompleted(operationCanceledException);
                 }
                 catch (Exception exception)
                 {
                     var wmiException = new WMIGeneralException(wmiAccessService.EndPoint, exception);
                     LogEventHandler.Exception(wmiException);
                 }
                 return null;
             }, cancellationToken).ConfigureAwait(false));
         }
         catch (OperationCanceledException operationCanceledException)
         {
             LogEventHandler.TaskIncompleted(operationCanceledException);
         }
         catch (Exception)
         {
             if (!cancellationToken.IsCancellationRequested)
             {
                 throw;
             }
         }
     }
     return(null);
 }
示例#5
0
        /// <summary>
        /// Gets Device based on provided WMIAccessService
        /// </summary>
        /// <param name="wmiAccessService">Provides device access</param>
        /// <returns>Returns awaitable Task with Device</returns>
        public async Task <Device> GetDeviceAsync(WMIAccessService wmiAccessService)
        {
            Devices = await GetDevicesAsync(new[] { wmiAccessService }).ConfigureAwait(false);

            return(Devices.FirstOrDefault());
        }
示例#6
0
 /// <summary>
 /// Device to use the provided WMIAccessService as access
 /// </summary>
 /// <param name="wmiAccessService">Provides access</param>
 /// <returns>Returns this with provided WMIAccessService</returns>
 public IDevice WithWMIAccessService(WMIAccessService wmiAccessService)
 {
     _wmiAccessService = wmiAccessService;
     return(this);
 }
示例#7
0
 public Device(WMIAccessService wmiAccessService, InformationCategory[] informationCategories = null, params InformationType[] informationTypes) : this()
 {
     _wmiAccessService     = wmiAccessService;
     InformationTypes      = informationTypes;
     InformationCategories = informationCategories;
 }
示例#8
0
 public Device(WMIAccessService wmiAccessService, params InformationType[] informationTypes) : this(wmiAccessService, null, informationTypes)
 {
 }