Filesystemwatcher не дорабатывает

  • Автор темы Lexus !!!
  • Дата начала
Статус
Закрыто для дальнейших ответов.
L

Lexus !!!

#1
Уважаемые господа прошу помощи !!!!
Есть задача: Создать службу виНдос которая при появлении файлов в одной папке копирует их в другую. Вот то что я налабал:
Код:
namespace Otpravka
{
public partial class Otpravka : ServiceBase
{
public static FileSystemWatcher watcher;

public Otpravka()
{
InitializeComponent();
if (!System.Diagnostics.EventLog.SourceExists("OtpSource"))
{
System.Diagnostics.EventLog.CreateEventSource("OtpSource", "OtpLog");
}
}

protected override void OnStart(string[] args)
{
OtpLog.WriteEntry("Сервис Otpravka запущен !!!");
if (!(Directory.Exists(DirIn) & Directory.Exists(DirOut)))
{
OtpLog.WriteEntry("Не существует одна или целевых директорий.");
OnStop();
}

watcher = new FileSystemWatcher(DirIn, "*.arj");
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.LastAccess | NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.EnableRaisingEvents = true;
}

protected override void OnStop()
{
if (EventLog.SourceExists("OtpSource"))
{
EventLog.DeleteEventSource("OtpSource");
EventLog.Delete("OtpLog");
OtpLog.WriteEntry("OtpLog удалён");
}
OtpLog.WriteEntry("Сервис Otpravka остановлен !!!");
}
public void OnChanged(object source, FileSystemEventArgs e)
{
String DataT = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString().PadLeft(2, '0')+ DateTime.Now.Day.ToString().PadLeft(2, '0');
if(!Directory.Exists(Otpravleno+DataT))
{
Directory.CreateDirectory(Otpravleno + DataT);
}
try
{
if (File.Exists(DirIn + "\\" + e.Name.Split('.')[0]+".055"))
{
OtpLog.WriteEntry("Файл " + e.Name.Split('.')[0] + ".055" + " есть !");
File.Move(e.FullPath, DirOut + e.Name);
File.Move(DirIn + "\\" + e.Name.Split('.')[0] + ".055", DirOut + e.Name.Split('.')[0] + ".055");

File.Delete(e.FullPath);
File.Delete(DirIn + "\\" + e.Name.Split('.')[0] + ".055");
OtpLog.WriteEntry("Файл " + e.Name + " скопирован и удалён !");

}
else
{
OtpLog.WriteEntry("Нет прикреплённого файла.");
}


}
catch (Exception ex)
{
OtpLog.WriteEntry(ex.Message);
OnStop();
OtpLog.WriteEntry("Сервис Otpravka остановлен !!!");
}

}
}
}
Всё правельно всё работает но не до конца. А проблема вот в чём: я копирую 300 файлов из сети а он переносит примерно треть. Подскажите в чём проблема и как решить. Я новичёк в C# и не могу понять где трабл.
Заранее спасибочки.

И ещё вопрос есть какая-то сборочка которая помогает работать с Nowell. Короче надо програмно залогинится в Nowell и проверить подключён-ли сетевой диск и так же програмно с ним работать.
 
Статус
Закрыто для дальнейших ответов.