private void Arquivo_Exited(object sender, System.EventArgs e) { csArquivoAberto RemoverArquivoAberto = null; foreach (csArquivoAberto ArquivoAberto in ProcessosAbertos) { if (ArquivoAberto.Processo.Equals(sender)) { bool AindaEstaNaLista = false; RemoverArquivoAberto = ArquivoAberto; foreach (csItemArquivo ItemArquivo in _ItemListaArquivos.ItensArquivo) { if (ItemArquivo.Equals(ArquivoAberto.ItemArquivo)) { AindaEstaNaLista = true; } } if (AindaEstaNaLista) { DateTime DataHoraAlteracao = File.GetLastWriteTime(ArquivoAberto.NomeArquivo); if (DataHoraAlteracao != ArquivoAberto.DataHora) { DialogResult Resp; Resp = MessageBox.Show("O Arquivo " + csUtil.ParteNomeArquivo(ArquivoAberto.NomeArquivo, csUtil.enuParteNomeArquivo.NomeExtencao) + " foi alterado. Deseja salvar a alteração no Check List?\n", "Atualizar arquivo", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (Resp == DialogResult.Yes) { ArquivoAberto.ItemArquivo.CarregarArquivo(ArquivoAberto.NomeArquivo); this.Atualizar(); this.OnAlterouAlgo(new EventArgs()); } } } } } if (RemoverArquivoAberto != null) { ProcessosAbertos.Remove(RemoverArquivoAberto); GC.Collect(); } //try //{ // File.Delete(RemoverArquivoAberto.NomeArquivo); //} //catch (Exception) //{ //} }
private void lvwItemListaArquivos_DoubleClick(object sender, EventArgs e) { if (lvwItemListaArquivos.SelectedItems.Count > 0) { csItemArquivo ItemArquivo = (csItemArquivo)_ItemListaArquivos.ItensArquivo[lvwItemListaArquivos.SelectedIndices[0]]; csArquivoAberto ArquivoAberto = new csArquivoAberto(); ArquivoAberto.ItemArquivo = ItemArquivo; ArquivoAberto.NomeArquivo = Path.GetTempPath() + ItemArquivo.NomeArquivo; ItemArquivo.SalvarArquivo(ArquivoAberto.NomeArquivo); ArquivoAberto.DataHora = File.GetLastWriteTime(ArquivoAberto.NomeArquivo); Process Processo = new Process(); Processo.StartInfo.FileName = ArquivoAberto.NomeArquivo; Processo.EnableRaisingEvents = true; Processo.Exited += new EventHandler(Arquivo_Exited); Processo.Start(); ArquivoAberto.Processo = Processo; ProcessosAbertos.Add(ArquivoAberto); } }