NFe.Settings.Empresas.CanRun C# (CSharp) Method

CanRun() public static method

Verifica se já existe alguma instância do UniNFe executando para os diretórios informados

Se existir, retorna uma mensagem com todos os diretórios que estão executando uma instânmcia do UniNFe

public static CanRun ( ) : void
return void
        public static void CanRun()
        {
            if (Empresas.Configuracoes == null || Empresas.Configuracoes.Count == 0)
            {
                return;
            }

            //se no diretório de envio existir o arquivo "nome da máquina.locked" o diretório já está sendo atendido por alguma instancia do UniNFe

            foreach (Empresa emp in Empresas.Configuracoes)
            {
                if (string.IsNullOrEmpty(emp.PastaBase))
                {
                    throw new NFe.Components.Exceptions.ProblemaExecucaoUniNFe("Pasta de envio da empresa '" + emp.Nome + "' não está definida.");
                }
                else
                {
                    string dir = emp.PastaBase;

                    if (!Directory.Exists(dir))
                    {
                        throw new NFe.Components.Exceptions.ProblemaExecucaoUniNFe("Pasta de envio da empresa '" + emp.Nome + "' não existe.");
                    }
                    else
                    {
                        string fileName = String.Format("{0}-{1}.lock", Propriedade.NomeAplicacao, Environment.MachineName);
                        string filePath = String.Format("{0}\\{1}", dir, fileName);

                        //se já existe um arquivo de lock e o nome do arquivo for diferente desta máquina
                        //não pode deixar executar

                        string fileLock = (from x in
                                               (from f in Directory.GetFiles(dir, "*" + Propriedade.NomeAplicacao + "*.lock")
                                                select new FileInfo(f))
                                           where !x.Name.Equals(fileName, StringComparison.InvariantCultureIgnoreCase)
                                           select x.FullName).FirstOrDefault();

                        if (!String.IsNullOrEmpty(fileLock))
                        {
                            FileInfo fi = new FileInfo(fileLock);

                            throw new NFe.Components.Exceptions.AppJaExecutando("Já existe uma instância do " + Propriedade.NomeAplicacao +
                                                                                 " em Execução que atende a conjunto de pastas: " + fi.Directory.FullName + " (*Incluindo subdiretórios).\r\n\r\n" +
                                                                                 "Nome da estação que está executando: " + fi.Name.Replace(Propriedade.NomeAplicacao + "-", "").Replace(".lock", ""));
                        }
                    }
                }
            }
        }