Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Отлов большого количества событий c#


Автор: documentus 5.9.2012, 12:17
Доброго времени суток, пытаюсь написать программу, которая мониторит поступающие файлы в папку и что-то с ними делает. Для этого я использую события файловой системы, собственно вот код:

Код

Class MyProgramm
{
    void Process(Object o, FileSystemEventArgs e)
    {
        //do something with e.Name file
    }
    void main()
    {
        var FSW = New FileSystemWatcher{Path = "C:\\InputDir"};
        FSW.Created += Process;
        FSW.EnableRisingEvents = true;
        Thread.Sleep(Timeout.Infinite);
    }
}


Столкнулся с тем, что при одновременном копировании в наблюдаемую директорию большого колическтва файлов (овер 10К маленьких файликов) на часть из них события не приходят, в чём может быть проблема? smile 

Автор: Figoro 5.10.2012, 15:53
Какой объем работы делается в обработчике? Важно максимально снизить время обработки. Если там что то "большое" то лучше вынести в отдельный поток. Так же можно попробовать увеличить значение  InternalBufferSize (максимум до 64) по умолчанию по моему 4 КБ, используй значения кратные 4.

Автор: wester 6.10.2012, 15:31
вот эту http://www.cyberforum.ru/csharp-beginners/thread647067.html почитай, особенно последнее сообщение

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)