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; })); }
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(); }
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); }
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); }
/// <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()); }
/// <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); }
public Device(WMIAccessService wmiAccessService, InformationCategory[] informationCategories = null, params InformationType[] informationTypes) : this() { _wmiAccessService = wmiAccessService; InformationTypes = informationTypes; InformationCategories = informationCategories; }
public Device(WMIAccessService wmiAccessService, params InformationType[] informationTypes) : this(wmiAccessService, null, informationTypes) { }