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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar