.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");
        
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы