Candor.Tasks.ServiceProcess.ServiceMonitorWorkerRoleTask.RestartServer C# (CSharp) Method

RestartServer() protected method

Force Restarts the service, if possible.
protected RestartServer ( ) : bool
return bool
        protected bool RestartServer()
        {
            try
            {
                if (ServiceMachineName.Length == 0) { return false; }

                LogProvider.WarnFormat("Attempting to restart server monitored by '{0}'.", Name);

                var server = new ManagementScope
                    {
                        Path = new ManagementPath(FormatServerName(ServiceMachineName)),
                        Options = {Impersonation = ImpersonationLevel.Impersonate, EnablePrivileges = true}
                    };

                var oQuery = new ObjectQuery("select name from Win32_OperatingSystem");
                using (var search = new ManagementObjectSearcher(server, oQuery))
                {
                    using (var items = search.Get())
                    {
                        ManagementBaseObject rebootParams;
                        foreach (ManagementObject item in items)
                        {
                            using (rebootParams = item.GetMethodParameters("Win32Shutdown"))
                            {
                                rebootParams["Flags"] = REBOOT + FORCE;
                                rebootParams["Reserved"] = 0;
                                item.InvokeMethod("Win32Shutdown", rebootParams, null);
                            }
                        }
                    }
                }
                LogProvider.WarnFormat("Restarted server monitored by '{0}'.", Name);
                return true;
            }
            catch (Exception ex)
            {
                LogProvider.FatalFormat("Failed to restart server monitored by '{0}'.", ex, Name);
                return false;
            }
        }