.NET 4.x Процесс не может получить доступ к файлу "C:\Pro\Setting\NameFunction.txt", так как этот файл используется другим процессом - C#
Формулировка задачи:
Помогите, пожалуйста, не могу понять в чем причина.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.IO; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Reflection; using Function_Interface; namespace System_MRT { public partial class Form2 : Form { string[] FileNames; string PathFile; string backupDir; string FileSetting; Stream myStream; public Form2() { InitializeComponent(); } public void Test_Function() { for (int j = 0; j < FileNames.Length; j++) { try { Assembly x = Assembly.LoadFrom(PathFile + @"\" + FileNames[j]); string NamesSpase_DLL = FileNames[j].Substring(0, FileNames[j].Length - 3); Type t = x.GetType(NamesSpase_DLL + "Class1"); if (t != null) { object func = Activator.CreateInstance(t, null); if (func is IFunction) { dataGridView1.Rows.Add(); dataGridView1.Rows[j].Cells[0].Value = FileNames[j]; } else MessageBox.Show("Выбранная функция не реализуеи интерфейс IFunction", "Warning"); } } catch { MessageBox.Show("File not load ", "Warning"); } } } public void Test_ScalarCalc() { for (int j = 0; j < FileNames.Length; j++) { try { Assembly x = Assembly.LoadFrom(PathFile + @"\" + FileNames[j]); string NamesSpase_DLL = FileNames[j].Substring(0, FileNames[j].Length - 3); Type t = x.GetType(NamesSpase_DLL + "Class1"); if (t != null) { object func = Activator.CreateInstance(t, null); if (func is IScalarCalc) { dataGridView1.Rows.Add(); dataGridView1.Rows[j].Cells[0].Value = FileNames[j]; } else MessageBox.Show("Выбранная функция не реализуеи интерфейс IScalarCalc", "Warning"); } } catch { MessageBox.Show("File not load ", "Warning"); } } } public void Test_Method() { for (int j = 0; j < FileNames.Length; j++) { try { Assembly x = Assembly.LoadFrom(PathFile + @"\" + FileNames[j]); string NamesSpase_DLL = FileNames[j].Substring(0, FileNames[j].Length - 3); Type t = x.GetType(NamesSpase_DLL + "Class1"); if (t != null) { object func = Activator.CreateInstance(t, null); if (func is IMethod) { dataGridView1.Rows.Add(); dataGridView1.Rows[j].Cells[0].Value = FileNames[j]; } else MessageBox.Show("Выбранная функция не реализуеи интерфейс IMethod", "Warning"); } } catch { MessageBox.Show("File not load ", "Warning"); } } } public void Test_Accuracy() { for (int j = 0; j < FileNames.Length; j++) { try { Assembly x = Assembly.LoadFrom(PathFile + @"\" + FileNames[j]); string NamesSpase_DLL = FileNames[j].Substring(0, FileNames[j].Length - 3); Type t = x.GetType(NamesSpase_DLL + "Class1"); if (t != null) { object func = Activator.CreateInstance(t, null); if (func is IMethod) { dataGridView1.Rows.Add(); dataGridView1.Rows[j].Cells[0].Value = FileNames[j]; } else MessageBox.Show("Выбранная функция не реализуеи интерфейс IMethod", "Warning"); } } catch { MessageBox.Show("File not load ", "Warning"); } } } public void File_Write() { if (comboBox1.SelectedIndex == 0) { backupDir = @"C:\Pro\Function\"; FileSetting = "NameFunction.txt"; } if (comboBox1.SelectedIndex == 1) { backupDir = @"C:\Pro\Method\"; FileSetting = "NameMethod.txt"; } if (comboBox1.SelectedIndex == 2) { backupDir = @"C:\Pro\ScalarCalc\"; FileSetting = "NameScalarCalc.txt"; } if (comboBox1.SelectedIndex == 3) { backupDir = @"C:\Pro\Accuracy\"; FileSetting = "NameAccuracy.txt"; } string f = @"C:\Pro\Setting\" + FileSetting;[SPOILER][SPOILER][/SPOILER][/SPOILER] for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { File.Move(PathFile + @"\" + dataGridView1[0, i].Value.ToString(), backupDir + dataGridView1[0, i].Value.ToString()); File.AppendAllText(f, "|" + dataGridView1[0, i].Value.ToString() + "|" + dataGridView1[1, i].Value.ToString()); } MessageBox.Show("Add module is fine"); } private void button1_Click(object sender, EventArgs e) { if (textBox1.Text == pass.Text) { panel2.Visible = false; panel1.Visible = true; } else { MessageBox.Show("No correct password !!!", "ERROR"); textBox1.Text = ""; } } private void button2_Click(object sender, EventArgs e) { pass.Text = textBox2.Text; label4.Visible = true; pass.Visible = true; } private void Load_Click(object sender, EventArgs e) { if (comboBox1.SelectedItem != null) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { if ((myStream = openFileDialog1.OpenFile()) != null) { // openFileDialog1.ShowDialog(); FileNames = openFileDialog1.SafeFileNames; PathFile = Path.GetDirectoryName(openFileDialog1.FileName); myStream.Close(); if (comboBox1.SelectedIndex == 0) Test_Function(); if (comboBox1.SelectedIndex == 1) Test_Method(); if (comboBox1.SelectedIndex == 2) Test_ScalarCalc(); if (comboBox1.SelectedIndex == 3) Test_Accuracy(); } } } else MessageBox.Show("Select module", "Warning"); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { dataGridView1.Rows.Clear(); } private void button3_Click(object sender, EventArgs e) { for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { if (dataGridView1[1, i].Value == null) { MessageBox.Show("Enter name for DLL ", "Warning"); break; } else File_Write(); } } } }
Решение задачи: «.NET 4.x Процесс не может получить доступ к файлу "C:\Pro\Setting\NameFunction.txt", так как этот файл используется другим процессом»
textual
Листинг программы
void File_Write() { if (comboBox1.SelectedIndex == 0) { backupDir = @"C:\Pro\Function\"; FileSetting = "NameFunction.txt"; } if (comboBox1.SelectedIndex == 1) { backupDir = @"C:\Pro\Method\"; FileSetting = ".txt"; } if (comboBox1.SelectedIndex == 2) { backupDir = @"C:\Pro\ScalarCalc\"; FileSetting = "NameScalarCalc.txt"; } if (comboBox1.SelectedIndex == 3) { backupDir = @"C:\Pro\Accuracy\"; FileSetting = ".txt"; } string f = @"C:\Pro\Setting\" + FileSetting; string line = ""; for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { File.Move(PathFile + @"\" + dataGridView1[0, i].Value.ToString(), backupDir + dataGridView1[0, i].Value.ToString()); line = line + "|" + dataGridView1[0, i].Value.ToString() + "|" + dataGridView1[1, i].Value.ToString(); } File.AppendAllText(f, line); MessageBox.Show("Add module is fine"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д