/// <summary> /// The main entry point for the application. /// </summary> static void Main() { ServiceHost host = new ServiceHost(); bool runAsService; bool runAsApplication; Arguments args = new Arguments(Environment.CommandLine, true); if (args.Count > 1) { MessageBox.Show("Too many arguments. If specified, argument must be one of: -RunAsService, -RunAsApplication or -RunAsConsole."); Environment.Exit(1); } if (args.Count == 0) { #if DEBUG runAsService = false; runAsApplication = true; #else runAsService = true; runAsApplication = false; #endif } else { runAsService = args.Exists("RunAsService"); runAsApplication = args.Exists("RunAsApplication"); if (!runAsService && !runAsApplication && !args.Exists("RunAsConsole")) { MessageBox.Show("Invalid argument. If specified, argument must be one of: -RunAsService, -RunAsApplication or -RunAsConsole."); Environment.Exit(1); } } if (runAsService) { // Run as Windows Service. ServiceBase.Run(new ServiceBase[] { host }); } else if (runAsApplication) { // Run as Windows Application. Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new DebugHost(host)); } else { string hostedServiceSessionName = host.ServiceName + "Shell.exe"; Process hostedServiceSession = Process.Start(hostedServiceSessionName); if ((object)hostedServiceSession != null) { hostedServiceSession.WaitForExit(); Environment.Exit(hostedServiceSession.ExitCode); } else { MessageBox.Show(string.Format("Failed to start \"{0}\" with a hosted service.", hostedServiceSessionName)); Environment.Exit(1); } } }
public DebugHost(ServiceHost host) { this.ServiceHost = host; InitializeComponent(); }