コード例 #1
0
        private void TglRouting_CheckedChanged(object sender, EventArgs e)
        {
            var invokeGenerator = new Func <bool, MethodInvoker>(status => (MethodInvoker) delegate
            {
                tglRouting.Enabled     = status;
                spinnerRouting.Visible = !status;
            });

            if (tglRouting.Checked && Globals.RoutingService.Status != ServiceControllerStatus.Running)
            {
                Task.Run(() =>
                {
                    Invoke(invokeGenerator(false));

                    ServiceUtilities.ChangeStartMode(Globals.RoutingService, ServiceStartMode.Manual);
                    Globals.RoutingService.Start();

                    while (Globals.RoutingService.Status != ServiceControllerStatus.Running)
                    {
                        Thread.Sleep(250);
                        Globals.RoutingService.Refresh();
                    }

                    Invoke(invokeGenerator(true));
                });
            }
            else if (!tglRouting.Checked && Globals.RoutingService.Status == ServiceControllerStatus.Running)
            {
                Task.Run(() =>
                {
                    Invoke(invokeGenerator(false));

                    Globals.RoutingService.Stop();
                    ServiceUtilities.ChangeStartMode(Globals.RoutingService, ServiceStartMode.Manual);

                    while (Globals.RoutingService.Status != ServiceControllerStatus.Stopped)
                    {
                        Thread.Sleep(250);
                        Globals.RoutingService.Refresh();
                    }

                    Invoke(invokeGenerator(true));
                });
            }
        }