Fix perf issue in provider by using Refresh() to update the status rather than instantiating ServiceController which has a significant perf degradation from .NET Framework (#7680)

This commit is contained in:
Steve Lee 2018-09-04 10:00:16 -07:00 committed by Travis Plunk
parent 56f1db33d3
commit e0e445e88b

View file

@ -30,6 +30,8 @@ namespace Microsoft.WSMan.Management
//Plugin Name Storage //Plugin Name Storage
private PSObject objPluginNames = null; private PSObject objPluginNames = null;
private ServiceController winrmServiceController;
/// <summary> /// <summary>
/// Determines if Set-Item user input type validation is required or not. /// Determines if Set-Item user input type validation is required or not.
/// It is True by default, Clear-Item will set it to false so that it can /// It is True by default, Clear-Item will set it to false so that it can
@ -4436,15 +4438,16 @@ namespace Microsoft.WSMan.Management
/// <returns></returns> /// <returns></returns>
private bool IsWSManServiceRunning() private bool IsWSManServiceRunning()
{ {
ServiceController svc = new ServiceController("WinRM"); if (winrmServiceController == null)
if (svc != null)
{ {
if (svc.Status.Equals(ServiceControllerStatus.Running)) winrmServiceController = new ServiceController("WinRM");
{
return true;
}
} }
return false; else
{
winrmServiceController.Refresh();
}
return (winrmServiceController.Status.Equals(ServiceControllerStatus.Running));
} }
/// <summary> /// <summary>