Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 270

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 264 265 266 267 268 269 < 270 > 271 272 273 274 275 276 .. 404 >> Следующая


public Forml ()

{

П

// Необходимо для поддержки Windows Form Designer

//

InitiaiizeComponent();

Directorylnfo eDir * new DirectoryInfo(*C:/FileLogs*)i

il(JaDir.Exists) aDir,Create 0t
Работа с файлами__________________________________________________________________________579

11. Постройте проект. Если процедура построения проекта завершится успешно, то нажмите кнопку Browse и выберите какой-либо текстовый файл из имеющихся иа вашем компьютере.

12. Для начала наблюдения за файлом нажмите кнопку Watch. Единственное видимое изменение, которое произойдет с вашим приложением,— это появление управляющего элемента с надписью, указывающей, за каким именно файлом ведется наблюдение.

13. С помощью Windows Explorer перейдите к тому самому файлу, за которым установлено наблюдение. Откройте этот файл в Notepad, добавьте в него произвольный текст. Сохраните файл.

14. Теперь можно просмотреть регистрационный файл, в котором будут отражены все изменения. Откройте файл C:\PileLogs\Log.txt в Notepad. Вы должны увидеть описание произошедших с ним изменений (см. рис. слева).

Как это работает — Наблюдение за состоянием файловой системы

Это очень простое приложение, однако оно позволяет продемонстрировать, как работает объект FileSystemWatcher, Если вы зададите для данной директории *.*, то отслеживаться будут все изменения, происходящие в данной директории.

Большая часть кода в приложении касается настройки объекта FileSystemWatcher, для того чтобы можно было вести наблюдение в нужном месте:

watcher.Path =Path.GetDirectorYName(txtLocation.Text); watcher.Filter = Path.GetFileName(txtLocation,Text); watcher.NotifyFiiter =

NotifyFilters.Lastwrite 1 NotifyFilters.FileName I NotifyPiIters.Size; lblWatch.Text = 'Watching * + txtLocation.Text;

// Начало наблюдения. watcher.EnableRaisingEvents - true;

В этом коде сначала задается путь к директории, в которой будет вестись наблюдение, для чего используется новый для нас объект, с которым нам еще не приходилось сталкиваться,— объект System.ю.Path, Это статический класс, очень напомннающий статический объект Pile. Он обладает большим количеством методов, позволяющих выполнять манипуляции и извлекать информацию из строк, представляющих ведущие к файлам пути. Сначала мы используем этот объект для получения имени директории, введенной пользователем в текстовом окне, посредством метода GetDirectoryNameO.

В следующей строке задается фильтр, который будет использоваться объектом, В качестве фильтра может фигурировать просто имя файла, в этом случае наблюдение будет вестись только за указанным файлом, а может использоваться какая-либо строка вроде *.txt — в таком случае наблюдение будет вестись за всеми файлами с расширением .txt, находящимися в данной директории. Здесь снова используется статический объект Path для извлечения информации из местоположения файла, заданного пользователем. .
580 Глава 20

Свойство NotifyFiiter представляет собой комбинацию из нескольких перечислимых значений типа NotifyFilters, с помощью которых определяется, что входит в понятие изменения, В данном примере мы требуем, что наше приложение должно уведомляться об изменениях времени последней записи в файл, имени файла или размера файла. После внесения изменений в пользовательский интерфейс мы присваиваем свойству EnableRaieinffEvents значение true, что приводит к началу ведения наблюдения, .

Однако перед этим нам приходится создать объект и определить обработчики событий:

this.watcher = new System.10.FileSystemWatcher();

this.watcher,Deleted + = new System.10.FileSystemEventHandler(this,OnDelete)j this.watcher.Renamed + = new System.10.RenamedEventHandler(this.OnBenomed); thi s. watcher. Changed + = new System. 10. FileSystemEventHandler (this .OnChoiiiged) ; this.watcher.Created += new System.10.FileSystemEventHandler(this.OnCreate)j

Именно таким образом нам удается привязать обработчики событий, отправляемых ведущим наблюдение объектом, к созданным нами частным методам, Именно в этих методах мы принимаем решение о том, каким образом следует обрабатывать наступившее событие. Не забудьте, что уведомление приходит после наступления события,

В методах обработчиков событий, которые используются в настоящем примере, просто производится соответствующая запись в файл регистрации. Реакция на наступившее событие может быть гораздо сложнее — это зависит от самого приложения, Например, если в директорию добавляется новый файл, то его можно Перенести куда-либо в другое место или, прочитав его содержимое, запустить какой-либо новый процесс, в котором будет использоваться содержащаяся в нем . информация. Наши возможности безграничны!

Асинхронный доступ к файлам

Доступ ко всем файлам на протяжении настоящей главы осуществлялся синхронным образом. Это означает, что выполнение приложения будет приостановлено до тех пор, пока операция чтения или записи не будет завершена. Это оказывается вполне приемлемым для большинства приложений, однако иногда возникает необходимость записать очень большое количество данных, при этом у нрнложении совершенно отсутствует необходимость дожидаться окончания операции записи. Или, например, требуется считать информацию из файла, находящегося в сети с медленным соединением; в этом случае ваше приложение могло бы продолжать выполнять какую-либо другую работу, параллельно внося соответствующие изменения в управляющие элементы пользовательского интерфейса, отражающие процесс загрузки данных. Такой способ доступа к данным называется асинхронным. Обычно это означает, что приложение может выполнять какие-либо другие действия параллельно с неким процессом, например, с операцией ввода/ вывода файла, вместо того чтобы дожидаться окончания этого процесса.
Предыдущая << 1 .. 264 265 266 267 268 269 < 270 > 271 272 273 274 275 276 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.