Я использую FileSystemWatcher
для обнаружения изменений каталога, после чего я читаю содержимое файла и вставляю его в базу данных.
Вот мой код:
private FileSystemWatcher _watcher;
public MainWindow()
{
try
{
InitializeComponent();
GetFiles();
//Task.Factory.StartNew(() => GetFiles())
// .ContinueWith(task =>
// {
// }, System.Threading.CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());
}
catch(Exception ex)
{
//..
}
}
public bool GetFiles()
{
_watcher = new FileSystemWatcher(Globals.iniFilesPath, "*.ini");
_watcher.Created += FileCreated;
_watcher.IncludeSubdirectories = false;
_watcher.EnableRaisingEvents = true;
return true;
}
private void FileCreated(object sender, FileSystemEventArgs e)
{
try
{
string fileName = Path.GetFileNameWithoutExtension(e.FullPath);
if (!String.IsNullOrEmpty(fileName))
{
string[] content = File.ReadAllLines(e.FullPath);
string[] newStringArray = content.Select(s => s.Substring(s.LastIndexOf('=') + 1)).ToArray();
ChargingStationFile csf = new Product
{
Quantity = Convert.ToDecimal(newStringArray[1]),
Amount = Convert.ToDecimal(newStringArray[2]),
Price = Convert.ToDecimal(newStringArray[3]),
FileName = fileName
};
ProductController.Instance.Save(csf);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Если я запустил этот код с CTRL + F5 Я получил это сообщение:
Но если я go с F5 (режим отладки), чем я получаю это, а не эту ошибку о невозможности доступа к процессу, и элемент успешно сохранен. Это меня действительно сбивает с толку ..
Стоит ли избавляться от watcher? или что-то вроде того? Может я что-то здесь упускаю?
Я впервые использую FileSystemWatcher, я совершенно не понимаю, что здесь что-то не так ..
PS Я обнаружил, что эта строка вызывает исключение:
string[] content = File.ReadAllLines(e.FullPath);
почему?
Спасибо, ребята
Ура