พึ่งเคยใช้งานครั้งแรกโปรดอ่านที่นี่! howtouse!
x
  • Register
หางานด้าน IT อยู่เหรอ?

The process cannot access the file '' because it is being used by another process.

+1 vote
error มันบอกว่า ไฟล์นี้อยู่ในโปรเส็จอยู่ งงเลย โค้ดดังนี้

ฟอมหลัก

private void MainForm_Shown(object sender, EventArgs e)
        {
            FirstPage fpage = new FirstPage();
            if (fpage.ShowDialog() == DialogResult.OK)
            {
                DataSet temp = Utility.openxml(fpage._filename);
                path = fpage._filename;
                if (temp == null)
                {
                    
                }
                else
                {
                    ChildForm cform = new ChildForm(fpage._filename,temp);
                    cform.MdiParent = this;
                    cform.Show();
                    //cform.senddata += saveToolStripMenuItem_Click;
                }
            }
            else
            {
                
            }
        }

 

 private void saveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ChildForm temp = (ChildForm)this.ActiveMdiChild;
            Utility.savexml(temp.Text,temp._data);
            temp._savestatus = true;
        }

ฟอร์ม first page

private void btCreate_Click(object sender, EventArgs e)
        {
            SaveFileDialog sf = new SaveFileDialog();
            sf.Filter = "XML File(*.xml)|*.xml";
            sf.Title = "Save File";
            sf.AddExtension = true;
            sf.DefaultExt = ".xml";
            sf.FileName = ".xml";
            sf.ValidateNames = true;
            sf.OverwritePrompt = true;
            if (sf.ShowDialog() == DialogResult.OK)
            {
                DataSet temp = Utility.reftype().Copy();
                string temp2 = sf.FileName;
                Utility.savexml(temp2, temp);
                _filename = temp2;
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
        }

ฟอม utillity เป็น public static

public static void savexml(string path,DataSet data)
        {
            XDeclaration xdecla = new XDeclaration("1.0", "utf-8","yes");
            File.Delete(path);
            using (StreamWriter sw = new StreamWriter(path,false,Encoding.UTF8))
            {
                
                sw.WriteLine(xdecla);
                sw.WriteLine(data.GetXml());
                sw.Close();
            }

        }

 

พอเรากดปุ่ม create file จาก firstpage ได้ แต่เวลาเรากด save หน้า main มันขึ้นว่า e process cannot access the file '' because it is being used by another process.
ถามเมื่อ Apr 28, 2012 in C# โดย babyzaa159 (286 คะแนน)
   

1 Answer

+1 vote
open แล้วลืม close ป่าวครับ
ตอบเมื่อ Apr 28, 2012 โดย Chayapol Limanon (510 คะแนน)
ก็ไม่ลืมนะ streamwriter อันเดียว ตรง utility - -*
มันแปลกจนต้องถามเพราะ ผมcreate file แล้ว savefile เรียกใช้ utility.savexml จาก 2ที่ อีกที่ไม่ error อีกที่ error ทั้งๆ ที่โค้ดเหมือนกัน
private void newToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SaveFileDialog sf = new SaveFileDialog();
            sf.Filter = "Extensible Markup Language File(*.xml)|*.xml";
            sf.AddExtension = true;
            sf.DefaultExt = ".xml";
            sf.FileName = "*.xml";
            sf.ValidateNames = true;
            sf.OverwritePrompt = true;
            if (sf.ShowDialog() == DialogResult.OK)
            {
                DataSet temp = Utility.reftype().Copy();
                Utility.savexml(sf.FileName,temp);
                ChildForm cform = new ChildForm(sf.FileName,temp);
                cform.MdiParent = this;
                cform.Show();
            }  
        }
อันนี้อยู่ใน ฟอมหลัก เมื่อสร้างไฟล์ กดsaveToolStripMenuItem_Click ไม่ขึ้น error

Related questions

0 votes
1 คำตอบ
380 views ถามเมื่อ Jun 23, 2014 in C# โดย Ohmmiiz AloniiEz (102 คะแนน)
0 votes
0 คำตอบ
0 votes
4 คำตอบ
0 votes
0 คำตอบ
0 votes
0 คำตอบ
177 views ถามเมื่อ Sep 6, 2012 in programing-ทั่วไป โดย Khun Spuc ห้าสาม (116 คะแนน)
...