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

Тема в разделе ".NET", создана пользователем Lexus !!!, 14 сен 2007.

Статус темы:
Закрыта.
  1. Lexus !!!

    Lexus !!! Гость

    Уважаемые господа прошу помощи !!!!
    Есть задача: Создать службу виНдос которая при появлении файлов в одной папке копирует их в другую. Вот то что я налабал:
    Код (Text):
    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 и проверить подключён-ли сетевой диск и так же програмно с ним работать.
     
  2. Lexus !!!

    Lexus !!! Гость

    Это что мёртвый форум??????????????????? :)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей