예제 #1
0
        public static bool Uninstall(SystemSignalHandler handler)
        {
            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }

            return(Uninstall(handler.Signal));
        }
예제 #2
0
        public static bool Uninstall(Signals signum)
        {
            SystemSignalHandler handler = installedHandlers[signum] as SystemSignalHandler;

            if (handler == null)
            {
                return(false);
            }

            handler.Uninstall();
            return(true);
        }
예제 #3
0
        public static void Install(Type type, params object[] args)
        {
            if (type == null)
            {
                throw new ArgumentNullException("type");
            }

            if (!typeof(SystemSignalHandler).IsAssignableFrom(type))
            {
                throw new ArgumentException("The specified type '" + type + "' is not assignable from SystemSignalHandler.");
            }

            SystemSignalHandler handler = (SystemSignalHandler)Activator.CreateInstance(type, args);

            Install(handler);
        }
예제 #4
0
        public static void Install(SystemSignalHandler handler)
        {
            if (handler == null)
            {
                throw new ArgumentNullException("handler");
            }

            Signals signum = handler.Signal;

            if (installedHandlers.ContainsKey(signum))
            {
                throw new InvalidOperationException("An handler for the system signal " + signum + " is already installed.");
            }

            handler.Install();

            installedHandlers.Add(signum, handler);
        }