Usuário com melhor resposta
Criar e Deletar Arquivo

Pergunta
-
Bom Dia Prezados,
Eu tenho um relatório no ReportViewer que preciso enviar o mesmo por e-mail então gero um arquivo pdf no servidor anexo o mesmo no e-mail e envio o arquivo mas quando tendo apagar o arquivo não consigo por o arquivo ainda está sendo utilizado por outro processo, não sei mais o que fazer fecho o arquivo , coloquei null no objeto e nada alguém pode me ajudar , desde já agradeço a atenção de todos.
abaixo o código fonte:
byte[] bytes = ReportViewer1.LocalReport.Render("PDF",
null,
out mimeType,
out encoding,
out extension,
out streamids,
out warnings);
FileStream fs = new FileStream(@"" + cDiretorioDestino + "\\Certificado.pdf", FileMode.Create,FileAccess.Write);
fs.Write(bytes, 0, bytes.Length);
fs.Close();
fs = null;EnviarEMail();
File.Delete( cDiretorioDestino + "\\Certificado.pdf");
Respostas
-
Vamos supor que o processo que esteja usando o arquivo seja o notepad
Faça o seguinte codigo:
Process[] prcList = Process.GetProcesses(); foreach (Process p in prcList) { if (p.ProcessName == "notepad") { p.Kill(); } }
Se a minha resposta lhe foi util, marque "Propor como Proposta" para qualificar o conteudo do fórum. Obrigado, Vinicius Nunes Macedo- Marcado como Resposta Eder CostaModerator terça-feira, 8 de novembro de 2011 16:18
-
Eliabe,
Talvez o seu servidor SMTP ainda não tenha enviado o e-mail e esteja "prendendo" o arquivo... se você tentar apagá-lo dessa mesma forma depois de algum tempo, dá o mesmo problema?
Uma sugestão: Utilize o método Dispose() no seu Filestream ou utilize um bloco using:
using(FileStream fs = new FileStream(@"" + cDiretorioDestino + "\\Certificado.pdf", FileMode.Create,FileAccess.Write){ fs.Write(bytes, 0, bytes.Length); fs.Close(); }
- Marcado como Resposta Eder CostaModerator terça-feira, 8 de novembro de 2011 16:19
-
Eliabe,
Talvez o seu servidor SMTP ainda não tenha enviado o e-mail e esteja "prendendo" o arquivo... se você tentar apagá-lo dessa mesma forma depois de algum tempo, dá o mesmo problema?
Uma sugestão: Utilize o método Dispose() no seu Filestream ou utilize um bloco using:
using(FileStream fs = new FileStream(@"" + cDiretorioDestino + "\\Certificado.pdf", FileMode.Create,FileAccess.Write){ fs.Write(bytes, 0, bytes.Length); fs.Close(); }
Eu acredito que possa ser isso, Eliabe, tente utilizar e-mail assíncrono: http://wiki.asp.net/page.aspx/536/send-asynchronous-mail-using-aspnet/
Veja se o problema persiste, se persistir, poste novamente :)
- Marcado como Resposta Eder CostaModerator terça-feira, 8 de novembro de 2011 16:17
Todas as Respostas
-
Vamos supor que o processo que esteja usando o arquivo seja o notepad
Faça o seguinte codigo:
Process[] prcList = Process.GetProcesses(); foreach (Process p in prcList) { if (p.ProcessName == "notepad") { p.Kill(); } }
Se a minha resposta lhe foi util, marque "Propor como Proposta" para qualificar o conteudo do fórum. Obrigado, Vinicius Nunes Macedo- Marcado como Resposta Eder CostaModerator terça-feira, 8 de novembro de 2011 16:18
-
Eliabe,
Talvez o seu servidor SMTP ainda não tenha enviado o e-mail e esteja "prendendo" o arquivo... se você tentar apagá-lo dessa mesma forma depois de algum tempo, dá o mesmo problema?
Uma sugestão: Utilize o método Dispose() no seu Filestream ou utilize um bloco using:
using(FileStream fs = new FileStream(@"" + cDiretorioDestino + "\\Certificado.pdf", FileMode.Create,FileAccess.Write){ fs.Write(bytes, 0, bytes.Length); fs.Close(); }
- Marcado como Resposta Eder CostaModerator terça-feira, 8 de novembro de 2011 16:19
-
Eliabe,
Talvez o seu servidor SMTP ainda não tenha enviado o e-mail e esteja "prendendo" o arquivo... se você tentar apagá-lo dessa mesma forma depois de algum tempo, dá o mesmo problema?
Uma sugestão: Utilize o método Dispose() no seu Filestream ou utilize um bloco using:
using(FileStream fs = new FileStream(@"" + cDiretorioDestino + "\\Certificado.pdf", FileMode.Create,FileAccess.Write){ fs.Write(bytes, 0, bytes.Length); fs.Close(); }
Eu acredito que possa ser isso, Eliabe, tente utilizar e-mail assíncrono: http://wiki.asp.net/page.aspx/536/send-asynchronous-mail-using-aspnet/
Veja se o problema persiste, se persistir, poste novamente :)
- Marcado como Resposta Eder CostaModerator terça-feira, 8 de novembro de 2011 16:17