En iyi yanıtlayıcılar
The process cannot access the file 'C:\rapor.pdf' because it is being used by another process. hatası

Soru
-
merhaba.
c# crystal report üzerinden rapor alıp bunu e mail ile gönderen bir proje üzerinde çalışıyorum.
form çalıştığında formumun load unda rapor çalışıyor. button ile de bu raporu pdf e çevirip mail atabiliyorum. fakat formu kapatmadan tekrar mail buttonunu tıkladığımda "The process cannot access the file 'C:\\rapor.pdf' because it is being used by another process." hatasını alıyorum. sorunun çözümü için yardım rica ederim.
kodlarım:
ReportDocument cryRpt;
string pdfFile = "C:\\rapor.pdf";
string subject = "Barem Listesi Raporu";
public frmBaremListesi_raporu()
{
InitializeComponent();
}
private void frmBaremListesi_raporu_Load(object sender, EventArgs e)
{
cryRpt = new ReportDocument();
cryRpt.Load("C:\\Documents and Settings\\My Pc\\Belgelerim\\Visual Studio 2010\\Projects\\deneme\\Raporlar\\crBaremListesi_raporu.rpt");
crwBaremListesi_raporu.ReportSource = cryRpt;
crwBaremListesi_raporu.Refresh();
}
private void btnMailGonder_Click(object sender, EventArgs e)
{
ExportOptions CrExportOptions;
DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
CrDiskFileDestinationOptions.DiskFileName = pdfFile;
CrExportOptions = cryRpt.ExportOptions;
CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
CrExportOptions.FormatOptions = CrFormatTypeOptions;
cryRpt.Export();
FeMail.mailGonder(pdfFile, subject);public static void mailGonder(String Dosya, String subject)
{
SqlConnection conn = new SqlConnection(util.ConnectionString);
SqlCommand comm = new SqlCommand("select * from mail", conn);if (conn.State == ConnectionState.Closed)
conn.Open();
SqlDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
//EeMail mailGonder = new EeMail();
string Id = dr["mailId"].ToString();
string hesapAdi = dr["hesapAdi"].ToString();
string kullaniciAdi = dr["kullaniciAdi"].ToString();
string sifre = dr["sifre"].ToString();
string secim = dr["sunucu"].ToString();
string ipNo = dr["ipNo"].ToString();
string portNo = dr["port"].ToString();
string sunucu = dr["sunucu"].ToString();
string mail1 = dr["mailAdresi1"].ToString();
MailMessage e_posta = new MailMessage();
e_posta.From = new MailAddress(kullaniciAdi, hesapAdi);
e_posta.To.Add(mail1);
e_posta.IsBodyHtml = true;
e_posta.Subject = subject;
e_posta.Body = "Rapor Ektedir...";
e_posta.Attachments.Add(new Attachment(Dosya));
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = true;
smtp.Credentials = new NetworkCredential(kullaniciAdi, sifre);
smtp.Port = Convert.ToInt32(portNo);
smtp.Host = sunucu;
smtp.Send(e_posta);
MessageBox.Show("Email Gönderilmiştir.", "Bilgilendirme Penceresi");
}
Yanıtlar
-
TeamVier ile bağlanılıp sorun çözülmüştür.
- Yanıt Olarak İşaretleyen İbrahimcalisir 28 Haziran 2016 Salı 10:23
Tüm Yanıtlar
-
-
-
Merhaba Close methodunu kullanmanız gerekmekte. Ayrıntılı bilgi için https://msdn.microsoft.com/en-us/library/ms225490(VS.80).aspx adresine bakabilirsiniz. Mevcut raporunuz oluşturulduktan sonra hala aktıf durumda kapatma ıstegı gonderdıkten sonra istediğiniz işlemleri yapabilirsiniz.
-
cryRpt.Export();
FeMail.mailGonder(pdfFile, subject);
cryRpt.Close();Şeklinde olduğunda CrExportOptions = cryRpt.ExportOptions; kısmında geçersiz rapor yolu hatası veriyor
cryRpt.Export();
FeMail.mailGonder(pdfFile, subject);
cryRpt.Close();
cryRpt.Dispose();şekilnde olunca da CrExportOptions = cryRpt.ExportOptions; kısımında Object reference not set to an instance of an object. hatası veriyor
-
-
-
TeamVier ile bağlanılıp sorun çözülmüştür.
- Yanıt Olarak İşaretleyen İbrahimcalisir 28 Haziran 2016 Salı 10:23