Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Резидентная программа, нужно написать маленькую прогу 
:(
    Опции темы
СЭНСЭЙ
Дата 13.4.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Люди добрые помогите.
Есть прога которая реагирует на работу некоторого оборудования и вносит данные в текстовый файл.
Необходимо написать прогу, которая будет реагировать на изменения текстового файла.Неважно на какие , просто если изменилася к примеру размер файла. Я думал написать цикл в котором проверяется размер файла, но может кто то подскажет вариант порациональней?
PM MAIL   Вверх
Naum
Дата 13.4.2007, 17:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Почитай про FileSystemWatcher. 


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
СЭНСЭЙ
Дата 13.4.2007, 17:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



От спасибо, главное знать что искать...

Вот пример использования этого класса.

    // Подключем нужное пространство имен.
    using System.IO;
    class Class1
    {
        statyc void Main(string[] args)
        {
            // Будем следить за папкой "c:\tmp".
            FileSystemWatcher watcher = new FileSystemWatcher(@"c:\tmp");
            // Следим за изменением имени файлов.
            watcher.NotifyFilter = NotifyFilters.FileName;
            // Добавляем обработчик для события переименования файла.
            watcher.Renamed += new RenamedEventHandler(OnRenamed);
            // Начинаем слежение.
            watcher.EnableRaisingEvents = true;
            // Следим, пока пользователь не нажал q.
            Console.WriteLine("Press 'q' to exit");
            while(Console.Read()!='q');
        }
        // Обработчик для события переименования файла.
        private static void OnRenamed(object source, RenamedEventArgs e)
        {
            Console.WriteLine("{0} renamed to {1}", e.OldName, e.Name);
        }
    }
Как вы видите, схема действий тут такая - сначала мы указываем, за чем именно мы хотим следить (за какой папкой, за какими файлами и за какими событиями для этих файлов). Потом мы указываем, что за метод будет выполняться при наступлении того или иного события. Разумеется, этот метод должен быть в нашей программе, причем он должен иметь определенную сигнатуру.

Конкретно в нашем примере мы будем отслеживать переименование для всех файлов в папке "c:\tmp".

PM MAIL   Вверх
СЭНСЭЙ
Дата 14.4.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Вобщем помучался я и сделал наконецто обработчик событий любых изменений в папке

вот тело класса:
using System;
using System.IO;
using System.Data;
using System.Text;

namespace DataDaseF
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class Class1
    {
        public static void  watch()
        {
            // Будем следить за папкой "c:\tmp".
            FileSystemWatcher watcher = new FileSystemWatcher(@"c:\OUT41C");
            // Следим за изменением  файлов.
            watcher.NotifyFilter = NotifyFilters.LastWrite;
            // Добавляем обработчик для события измененияия любого файла в папке.
            watcher.Changed += new FileSystemEventHandler(OnChanged);
            // Начинаем слежение.
            watcher.EnableRaisingEvents = true;
            
        }
        // Обработчик для события изменеия файла.
        private static void OnChanged(object source, FileSystemEventArgs e)
        {
            //тело процедуры выполняемой при изменении
            string filename=@"c:\tmp\1.txt";
            
            FileStream afile = new FileStream(filename,FileMode.Create);
            StreamWriter sw = new StreamWriter(afile);
            
            sw.WriteLine("|");
                    
            sw.Close();
        }
    }
}

а потом вызывавем метод ксасса в главной форме

private void Form1_Load(object sender, System.EventArgs e)
        {    
            

            Class1.watch();
        }

результат: как только вносятся любые изменения в папку c:\OUT41C
то создается файл c:\tmp\1.txt и в него записывается символ "|"
как следить за розмером конкретного файла я пока не выяснил
PM MAIL   Вверх
mr.DUDA
Дата 15.4.2007, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



СЭНСЭЙ, пользуйтесь кнопкой "Код".


--------------------
user posted image
PM MAIL WWW   Вверх
СЭНСЭЙ
Дата 15.4.2007, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



хорошо

Добавлено через 16 секунд
ой...
Код

хорошо

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.