Example #1
0
        private static void WaitForServiceStatus(SC_HANDLE service, ServiceState status)
        {
            //query service status again to check that it changed
            var tests = 0;

            while (tests < 40)
            {
                if (GetState(service) == status)
                {
                    break;
                }

                Thread.Sleep(500);
                tests++;
            }

            if (tests >= 40)
            {
                throw new TimeoutException($"Timed-out waiting for service status {status}");
            }
        }
Example #2
0
 private static ServiceState GetState(SC_HANDLE handle) => QueryServiceStatus(handle, out var i) ? i.dwCurrentState : throw Win32Error.GetLastError().GetException();