Windows Service - não executa corretamente na primeira vez

09/01/2013

0

Bom dia,
Estou desenvolvendo um windows service para realizar backup de repositorios, estou testando com 2 repositorios e gerar um arquivo de log bem simples com intervalo de 1 em 1 minutos fazer o backup (apenas pra teste, logo o intervalo ira aumentar), porem ele na primeira execução faz o backup apenas do 2º repositorio e gera o log, e a partir da 2ª repetição executa corretamente, fazendo backup dos 2 repositorios e gerando o log.

public void Backup(object sender, ElapsedEventArgs e)
        {
            DateTime horario = DateTime.Now;
            Directory.Exists(@"C:\Repositories");
            //if (horario.Hour == 0 && horario.Minute == 0)
            //{
           
            int i = 1;
            ProcessStartInfo processStartInfo = new ProcessStartInfo();
            processStartInfo.FileName = "cmd.exe";
            processStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            processStartInfo.CreateNoWindow = true;
            processStartInfo.RedirectStandardInput = true;
            processStartInfo.RedirectStandardOutput = true;
            processStartInfo.UseShellExecute = false;
          
            foreach (string diretorio in Directory.GetDirectories(@"C:\Repositories"))
            {
                Process process = Process.Start(processStartInfo);
                process.StandardInput.WriteLine(@"cd c:\Arquivos de programas\visualsvn server\bin");
                process.StandardInput.WriteLine(@"svnadmin dump " + diretorio + @" > C:\BackupTeste" + i.ToString() + ".svn");
                i++;               
            }
            GerarLog();
           // }
        }

        //Gera o log mostrando o horário de realização de cada backup.
        public void GerarLog()
        {
            List<string> p = new List<string>();
            p.AddRange(Directory.GetDirectories(@"C:\Repositories"));
            int qtd = p.Count();
            string texto = "";
            string[] linhas = null;
            if (File.Exists(@"C:\backupRealizado.txt"))
            {
                linhas = File.ReadAllLines(@"C:\backupRealizado.txt");

                foreach (var x in linhas)
                {
                    texto += x + "\r\n";
                }
            }
            texto += "Iniciado backup de " + qtd.ToString() + " repositorios. \r\nEm: " + DateTime.Now.ToString() + "\r\n";
            StreamWriter sw = File.CreateText(@"C:\backupRealizado.txt");
            sw.WriteLine(texto);
            sw.Close();
        }      


O evento que realiza o backup e o metodo que irá gerar o log..

Já testei o mesmo código em uma aplicação e funcionou corretamente.
E quando tira o GerarLog(), ele faz o backup corretamente desde a 1ª repetição.

Qualquer ajuda será bem vinda!
Obrigado
Gustavo Henrique

Gustavo Henrique

Responder

Posts

10/01/2013

Gustavo Henrique

Coloquei um sleep dentro do foreach e funcionou de boa, possivelmente era algum atraso no comando svnadmin.
Responder

27/07/2013

José

Gustavo obrigado pelo retorno, e por compartilhar qual foi a solução.
Estou dando o tópico por ooncluído.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar