Программирование >>  Программирование с использованием ajax 

1 ... 251 252 253 [ 254 ] 255 256 257 ... 396


шеское занятие

Мониторинг файловой системы

1. Создайте новое консольное приложение по имени FileWatch и сохраните его в каталоге C:\BegVCSharp\Chapter24.

2. Установите различные свойства формы, как показано в табл. 24.11 Таблица 24.11. Значения свойств формы

Свойство

Установки

FormBorderStyle

FixedDialog

MaximizeBox

False

MinimizeBox

False

Size

302, 160

StartPosition

CenterScreen

Text

File Monitor

3. Используя информацию из табл. 24.12, добавьте на форму необходимые элементы управления и установите соответствующим образом их свойства.

Таблица 24.12. Элементы управления формы

Элемент управления

Местоположение

Размер

Текст

TextBox

txtLocation

8, 26

184, 20

Button

cmdBrowse

208, 24

64, 24

Browse...

Button

cmdWatch

88, 56

80, 32

Watch!

Label

IblWatch

8, 104

0, 13

Удостоверьтесь, что вы установили свойство Enabled кнопки cmdWatch в False, поскольку нельзя отслуживать файл до того, как он специфицирован, и установите свойство AutoSize метки IblWatch в True, чтобы видеть ее содержимое. Кроме того, добавьте на форму элемент управления OpenDialog, установив его свойство Name в FileDialog, свойство Filter - в All Files * . *. В результате должна получиться форма, подобная представленной на рис. 24.12.

?ornL( IDe gnlT

FileDialog

Рис. 24.12. Результирующая форма



4. Теперь, когда форма выглядит хорошо, можете добавить некоторый код, чтобы выполнить некоторую работу. Для начала добавьте обычную директиву using для пространства имен System. 10 к существующему списку директив:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.lO;

5. Добавьте класс FileSystemWatcher к классу Forml, вместе с делегатом для облегчения изменения текста IblWatch из разных потоков. Добавьте следующий код к Forml.cs:

namespace FileWatch {

partial class Forml : Form {

Объект наблюдения за файловой системой, private FileSystemWatcher watcher;

private delegate void UpdateWatchTextDelegate(string newText);

6. Также необходимо добавить некоторый код в конструктор формы. Сразу после вызова метода InitializeComponent () поместите приведенный ниже код. Код необходим для инициализации объекта FileStreamWatcher и ассоциации событий с методами, которые будут создана впоследствии.

public Forml () {

InitializeComponent();

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

new System.10.FileSystemEventHandler(this.OnDelete); this.watcher.Renamed +=

new System.10.RenamedEventHandler(this.OnRenamed); this.watcher.Changed +=

new System.10.FileSystemEventHandler(this.OnChanged); this.watcher.Created +=

new System.10.FileSystemEventHandler(this.OnCreate);

7. Добавьте следующие пять методов в класс Forml. Первый метод используется для асинхронного обновления текста в IblWatch из потоков, которые запустят обработчики событий FileSystemWatcher. Другие методы представляют собой сами обработчики событий.

Служебный метод для обновления текста наблюдения.

public void UpdateWatchText(string newText)

IblWatch.Text = newText;

Определение обработчиков событий.

public void OnChanged(object source, FileSystemEventArgs e) (

try {

StreamWriter sw = new StreamWriter( C:/FileLogs/Log.txt , true);



SW.WriteLine( File: {0} {!} , e.FullPath, е.ChangeType.ToString()); sw.Close 0;

this.Beginlnvoke(new UpdateWatchTextDelegate(UpdateWatchText), Wrote change event to log ); Запись в журнал события изменения

catch (lOException) {

this.Beginlnvoke(new UpdateWatchTextDelegate(UpdateWatchText), Error Writing to log ); Ошибка при записи в журнал

public void OnRenamed(object source, RenamedEventArgs e)

StreamWriter sw = new StreamWriter( C:/FileLogs/Log.txt , true); sw.WriteLine( File renamed from {0} to {!} , e.OldName, e.FullPath); sw.Close 0;

this.Beginlnvoke(new UpdateWatchTextDelegate(UpdateWatchText), Wrote renamed event to log ); Запись в журнал события переименования

catch (lOException) {

this.Beginlnvoke(new UpdateWatchTextDelegate(UpdateWatchText), Error Writing to log );

public void OnDelete(object source, FileSystemEventArgs e)

StreamWriter sw = new StreamWriter( C:/FileLogs/Log.txt , true); sw.WriteLine( File: {0} Deleted , e.FullPath); sw.Close 0;

this.Beginlnvoke(new UpdateWatchTextDelegate(UpdateWatchText), Wrote delete event to log ); Запись в журнал события удаления

catch (lOException) {

this.Beginlnvoke(new UpdateWatchTextDelegate(UpdateWatchText), Error Writing to log );

public void OnCreate(object source, FileSystemEventArgs e) (

StreamWriter sw = new StreamWriter( C:/FileLogs/Log.txt , true); sw.WriteLine( File: {0} Created , e.FullPath); sw.Close 0 ;

this.Beginlnvoke(new UpdateWatchTextDelegate(UpdateWatchText), Wrote create event to log ); Запись в журнал события создания

catch (lOException) {

this.Beginlnvoke(new UpdateWatchTextDelegate(UpdateWatchText), Error Writing to log );



1 ... 251 252 253 [ 254 ] 255 256 257 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика