示例#1
0
 public Application Recycle(string name, FailureToLaunchHandler failureToLaunchHandler)
 {
     return(RecycleOrHandleNone(name, FilterForViableProcesses,
                                s =>
     {
         failureToLaunchHandler(s);
         return null;
     },
                                failureToLaunchHandler));
 }
示例#2
0
 public Application Launch(string path, FailureToLaunchHandler failureToLaunchHandler)
 {
     try
     {
         Process process = Process.Start(new ProcessStartInfo(path));
         return new Application(process, Timeout);
     } catch (Win32Exception e)
     {
         failureToLaunchHandler("Could not start application: " + e.Message);
     }
     return null;
 }
示例#3
0
 public Application Launch(string path, FailureToLaunchHandler failureToLaunchHandler)
 {
     try
     {
         Process process = Process.Start(new ProcessStartInfo(path));
         return(new Application(process, Timeout));
     } catch (Win32Exception e)
     {
         failureToLaunchHandler("Could not start application: " + e.Message);
     }
     return(null);
 }
示例#4
0
        public Application LaunchVia(string name, string path, FailureToLaunchHandler failureHandler)
        {
            DateTime started = DateTime.Now;
            var existingProcesses = new List<Process>(Process.GetProcessesByName(name));

            Process.Start(new ProcessStartInfo(path));

            while (DateTime.Now.Subtract(started).CompareTo(Timeout) < 0)
            {
                var newProcesses = new List<Process>(Process.GetProcessesByName(name));
                newProcesses.RemoveAll(p => existingProcesses.Find(p2 => p2.Id == p.Id) != null);
                if (newProcesses.Count > 0) { return new Application(newProcesses[0], Timeout); }
                Thread.Sleep(100);
            }
            failureHandler(String.Format("Process {0} was not launched via {1}", name, path));
            return null;
        }
示例#5
0
        public Application LaunchVia(string name, string path, FailureToLaunchHandler failureHandler)
        {
            DateTime started           = DateTime.Now;
            var      existingProcesses = new List <Process>(Process.GetProcessesByName(name));

            Process.Start(new ProcessStartInfo(path));

            while (DateTime.Now.Subtract(started).CompareTo(Timeout) < 0)
            {
                var newProcesses = new List <Process>(Process.GetProcessesByName(name));
                newProcesses.RemoveAll(p => existingProcesses.Find(p2 => p2.Id == p.Id) != null);
                if (newProcesses.Count > 0)
                {
                    return(new Application(newProcesses[0], Timeout));
                }
                Thread.Sleep(100);
            }
            failureHandler(String.Format("Process {0} was not launched via {1}", name, path));
            return(null);
        }
示例#6
0
        private Application RecycleOrHandleNone(string name, ViableProcessFilter filter, HandlerForNoMatchingProcesses handler, FailureToLaunchHandler failureToLaunchHandler)
        {
            Process[] processes = Process.GetProcessesByName(name);

            List <Process> viableProcesses = filter(processes);

            if (viableProcesses.Count > 1)
            {
                failureToLaunchHandler("Cannot choose between two or more processes called " + name);
                return(null);
            }
            if (viableProcesses.Count < 1)
            {
                return(handler("Cannot find any processes called " + name));
            }
            return(new Application(viableProcesses[0], Timeout));
        }
示例#7
0
 public Application LaunchOrRecycle(string name, string path, FailureToLaunchHandler failureToLaunchHandler)
 {
     return(RecycleOrHandleNone(name, FilterForViableProcesses, s => Launch(path, failureToLaunchHandler), failureToLaunchHandler));
 }
示例#8
0
 public Application Recycle(string name, FailureToLaunchHandler failureToLaunchHandler)
 {
     return RecycleOrHandleNone(name, FilterForViableProcesses,
         s =>
         {
             failureToLaunchHandler(s);
             return null;
         },
         failureToLaunchHandler);
 }
示例#9
0
 public Application LaunchOrRecycle(string name, string path, FailureToLaunchHandler failureToLaunchHandler)
 {
     return RecycleOrHandleNone(name, FilterForViableProcesses, s => Launch(path, failureToLaunchHandler), failureToLaunchHandler);
 }
示例#10
0
        private Application RecycleOrHandleNone(string name, ViableProcessFilter filter, HandlerForNoMatchingProcesses handler, FailureToLaunchHandler failureToLaunchHandler)
        {
            Process[] processes = Process.GetProcessesByName(name);

            List<Process> viableProcesses = filter(processes);

            if (viableProcesses.Count > 1)
            {
                failureToLaunchHandler("Cannot choose between two or more processes called " + name);
                return null;
            }
            if (viableProcesses.Count < 1)
            {
                 return handler("Cannot find any processes called " + name);
            }
            return new Application(viableProcesses[0], Timeout);
        }