Exemplo n.º 1
0
        static async Task RunAndWait(HostArguments args)
        {
            using (var service = new Host {
                ServiceName = args.ServiceName
            })
            {
                var completionSource = new TaskCompletionSource <bool>(TaskCreationOptions.RunContinuationsAsynchronously);
                service.OnStopping = () =>
                {
                    service.OnStopping = () => { };
                    completionSource.TrySetResult(true);
                };

                service.Run(args.Portable || Environment.UserInteractive);

                var r = new CancelWrapper(completionSource, service);
                Console.CancelKeyPress += r.ConsoleOnCancelKeyPress;

                Console.WriteLine("Press Ctrl+C to exit");
                await completionSource.Task.ConfigureAwait(false);
            }
        }
Exemplo n.º 2
0
        void RunAndWait(HostArguments args)
        {
            using (var service = new Host {
                ServiceName = args.ServiceName
            })
            {
                using (var waitHandle = new ManualResetEvent(false))
                {
                    service.OnStopping = () =>
                    {
                        service.OnStopping = () => { };
                        waitHandle.Set();
                    };

                    service.Run(args.Portable || Environment.UserInteractive);

                    var r = new CancelWrapper(waitHandle, service);
                    Console.CancelKeyPress += r.ConsoleOnCancelKeyPress;

                    Console.WriteLine("Press Ctrl+C to exit");
                    waitHandle.WaitOne();
                }
            }
        }