Событие button1_Click (копирование PDF-файла в новое место) отлично работает при нажатии кнопки, и код выполняется в первый раз;C# System.UnathorizedAccessException на 2-й кнопке Нажмите
однако, при нажатии на кнопку второй раз (с той же записи текстовое поле), он выдает следующее сообщение об ошибке:
System.UnauthorizedAuthorizedAccessException: Access to the path "\share\drive....
Очевидно, что я не хочу, чтобы быть в состоянии дважды выполнить во время сеанс, учитывая ту же запись в текстовом поле. Прежде чем я это сделаю, я хотел бы исправить эту ошибку исключения. Я ошибочно оставляю путь открытым?
Код обновлен, чтобы показать решение:
public static string Case_No;
namespace CEB_Process
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//===============================
// TEXT BOX ENTRY
//===============================
private void textBox1_TextChanged(object sender, EventArgs e)
{
Form1.Case_No = textBox1.Text;
}
//==============================
// CHECK if Direcotry Exists
//==============================
public void CreateIfMissing(string path)
{
if (!Directory.Exists(path))
{
DirectoryInfo di = Directory.CreateDirectory(path);
//Added
var permissions = new DirectoryInfo(path);
permissions.Attributes &= ~FileAttributes.ReadOnly;
MessageBox.Show("The directory was created successfully");
}
}
//=================================
// MOVE Violation PDF's Button Click
//==================================
private void button1_Click(object sender, EventArgs e)
{
//Declare Source path directory from text box entry
string sourcePath = string.Format(@"\\share\drive\etc{0}", Case_No);
string targetPath = string.Format(@"\\share\drive\etc{0}", Case_No);
try
{
//Call Method to Check/Create Path
CreateIfMissing(targetPath);
//Get TRAKiT Violation PDF's from source
foreach (var sourceFilePath in Directory.GetFiles(sourcePath, "*.pdf"))
{
string fileName = Path.GetFileName(sourceFilePath);
string destinationFilePath = Path.Combine(targetPath, fileName);
System.IO.File.Copy(sourceFilePath, destinationFilePath, true);
File.SetAttributes(destinationFilePath, FileAttributes.Normal);
}//End For Each Loop
MessageBox.Show("Files Copied Successfully!");
}//end try
catch (Exception x)
{
MessageBox.Show("The process failed", x.ToString());
}
}//End Button Module
}//End Namespace
}//End Class
не имеет отношения к вашей проблеме: 'finally {} // Используется совместно с Try to Release resources': пустой блок finally сделает ... ничего! (нет освобождения какого-либо ресурса, а не того, что вам нужно здесь ... просто удалите это окончательно) –
Я предположил, что он освобождает ресурсы. Спасибо. – Tennis