Пример #1
0
        public bool Start()
        {
            if (Running)
            {
                return(false);
            }
            try
            {
                BaseProcess = Process.Start(new ProcessStartInfo(Manager.FrpcPath, Manager.GetArguments(Id))
                {
                    CreateNoWindow         = true,
                    UseShellExecute        = false,
                    RedirectStandardInput  = true,
                    RedirectStandardError  = true,
                    RedirectStandardOutput = true,
                    StandardErrorEncoding  = Encoding.UTF8,
                    StandardOutputEncoding = Encoding.UTF8
                });

                BaseProcess.ErrorDataReceived  += OnProcessData;
                BaseProcess.OutputDataReceived += OnProcessData;

                BaseProcess.BeginErrorReadLine();
                BaseProcess.BeginOutputReadLine();
                return(true);
            }
            catch (Exception e)
            {
                Manager.Main.LogManager.Log(LogManager.CATEGORY_SERVICE_WARNING, Name, "隧道启动失败: " + e.Message);
                Stop();
            }
            return(false);
        }