none
The process cannot access the file 'C:\rapor.pdf' because it is being used by another process. hatası RRS feed

  • 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");

                }





    28 Haziran 2016 Salı 07:55

Yanıtlar

Tüm Yanıtlar

  • şimdi hatada şunu diyor.

    C:\\rapor.pdf Dosyası hala kullandığı için erişim sağlayamıyorsun.  mail gönderimi bittikten sonra dosyayı sile bilirsin.

    string path = @"c:\rapor.pdf";

    if (File.Exists(path))
    {
        File.Delete(path);
    }
    28 Haziran 2016 Salı 08:24
  • ok fakat bu seferde aynı hatayı

    File.Delete(path); 

    kısmında alıyorum

    28 Haziran 2016 Salı 08:33
  • 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.
    28 Haziran 2016 Salı 08:36
  • evet ben sadece dosya silme kodunu verdim.

     cryRpt.Export();  Sonra 

    cryRpt.Close();
    cryRpt.Dispose(); 

    yazıp dener misin. 


    • Düzenleyen A_BLR 28 Haziran 2016 Salı 08:44
    • Yanıt Olarak Öneren A_BLR 28 Haziran 2016 Salı 10:15
    28 Haziran 2016 Salı 08:42
  • 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 

    28 Haziran 2016 Salı 09:11

  • Close() Komutu İşlemi kapatır.

    Disponse() ise Bellekten atar.  dosyayı bellekten attığı için bulamıyor. sadece kapatıp dener misin.

    telefondan bakıyorum kodları hepsini göremiyorum. bilgisayar başına geçince bakacağım

    28 Haziran 2016 Salı 09:20
  • sadece close()

    yazığımda

    CrExportOptions = cryRpt.ExportOptions; kısmında geçersiz rapor yolu hatası veriyor

    28 Haziran 2016 Salı 09:23
  • TeamVier ile bağlanılıp sorun çözülmüştür.
    28 Haziran 2016 Salı 10:23