О FilesystemWatches

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

TohaSan
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 20.03.2006 (Пн) 17:10

О FilesystemWatches

Сообщение TohaSan » 13.06.2006 (Вт) 11:27

Вопрос в следующем: как можно следить за изменением в .jpg файлах? Я задаю фильтр по этому расширению, и ничего. У меня этим компонентом получалось отслеживать только текстовые файлы.

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 13.06.2006 (Вт) 23:51

Попробуй без компонента напрямую, у меня работает

Код: Выделить всё
Imports System.IO

Public Class Form1
    Dim WithEvents FSW As New System.IO.FileSystemWatcher("C:\", "*.jpg")

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        FSW.EnableRaisingEvents = True
    End Sub

    Private Sub FSW_Changed(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles FSW.Changed
        MsgBox(e.FullPath & " - Changed")
    End Sub

End Class


проверил на компоненте - тоже работает.
Посмотри свойства:
EnableRaisingEvents - должно быть True
NotifyFilter - по умолчанию FileName, DirectoryName, LastWrite
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

TohaSan
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 20.03.2006 (Пн) 17:10

О FilesystemWatches

Сообщение TohaSan » 14.06.2006 (Ср) 12:30

Странно вот что: я в точности скопировал приведённый выше код. И всё равно что-то ничего не отслеживается. Интересно, почему? Причем я даже точь-в-точь с MSDN брал код - тоже не работает. :( Странно как-то. Из-за чего это может быть?

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 19.06.2006 (Пн) 10:45

по умолчанию винда записывает время последнего доступа к файлу.
Может ты отключил эту возможность?
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

TohaSan
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 20.03.2006 (Пн) 17:10

О FilesystemWatches

Сообщение TohaSan » 19.06.2006 (Пн) 18:50

Нет, я не отключал. К тому же для текстовых файлов то всё работает, а вот с графическими не хочет. Вот так. :(

twinzco
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 22.05.2006 (Пн) 23:36

Сообщение twinzco » 19.06.2006 (Пн) 23:01

А может не .jpg a .jpeg?

TohaSan
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 20.03.2006 (Пн) 17:10

О FilesystemWatches

Сообщение TohaSan » 20.06.2006 (Вт) 9:03

Нет, не помогает. :(

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 20.06.2006 (Вт) 11:07

Скинь код. По крайней мере узнаем в проге у тебя ошибка или в системе какойто глюк.
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

TohaSan
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 20.03.2006 (Пн) 17:10

Сообщение TohaSan » 21.06.2006 (Ср) 9:38

Привожу текст всего модуля (т.к. приложение консольное):
(практически точь-в-точь с MSDN)

Код: Выделить всё
Imports System.IO

Module Watch

    Public WithEvents fsw As New FileSystemWatcher("E:\", "*.jpg")

    Sub Main()
        ' Create a FileSystemWatcher to monitor all files on drive C.
        'Dim fsw As New FileSystemWatcher("E:\")

        ' Watch for changes in LastAccess and LastWrite times, and
        ' the renaming of files or directories.
        fsw.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite _
            Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)

        ' Register a handler that gets called when a
        ' file is created, changed, or deleted.
        AddHandler fsw.Changed, New FileSystemEventHandler(AddressOf OnChanged)

        ' The commented line of code below is a shorthand of the above line.
        ' AddHandler fsw.Changed, AddressOf OnChanged

        ' NOTE: The shorthand version is used in the remainder of this code.
        ' FileSystemEventHandler
        AddHandler fsw.Created, AddressOf OnChanged
        ' FileSystemEventHandler
        AddHandler fsw.Deleted, AddressOf OnChanged

        ' Register a handler that gets called when a file is renamed.
        ' RenamedEventHandler
        AddHandler fsw.Renamed, AddressOf OnRenamed

        ' Register a handler that gets called if the
        ' FileSystemWatcher needs to report an error.
        ' ErrorEventHandler
        AddHandler fsw.Error, AddressOf OnError

        fsw.IncludeSubdirectories = True

        ' Begin watching.
        fsw.EnableRaisingEvents = True
        'fsw.IncludeSubdirectories = True

        ' Wait for the user to quit the program.
        Console.WriteLine("Press 'Enter' to quit the sample.")
        Console.ReadLine()
    End Sub

    ' This method is called when a file is created, changed, or deleted.
    Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)

        ' Show that a file has been created, changed, or deleted.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
    End Sub

    ' This method is called when a file is renamed.
    Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)

        ' Show that a file has been renamed.
        Dim wct As WatcherChangeTypes = e.ChangeType
        Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString())
    End Sub

    ' This method is called when the FileSystemWatcher detects an error.
    Private Sub OnError(ByVal source As Object, ByVal e As ErrorEventArgs)

        ' Show that an error has been detected.
        Console.WriteLine("The FileSystemWatcher has detected an error")

        ' Give more information if the error is due to an internal buffer overflow.
        If TypeOf e.GetException Is InternalBufferOverflowException Then
            ' This can happen if Windows is reporting many file system events quickly
            ' and internal buffer of the  FileSystemWatcher is not large enough to handle this
            ' rate of events. The InternalBufferOverflowException error informs the application
            ' that some of the file system events are being lost.
            Console.WriteLine( _
                "The file system watcher experienced an internal buffer overflow: " _
                + e.GetException.Message)
        End If
    End Sub
End Module

Вот ещё один вариант (на сей раз WinApplication; генерируемый автоматически код дизайнером приводить не стал):

Partial Class Form1

Private Sub FSMonitor_Changed(ByVal sender As System.Object, ByVal e As System.IO.FileSystemEventArgs) Handles FSMonitor.Changed

        ListBox1.Items.Add(e.Name)

    End Sub

    Private Sub cmdBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBrowse.Click

        If FolderBrowser.ShowDialog() = Windows.Forms.DialogResult.OK Then

            txtDirectory.Text = FolderBrowser.SelectedPath

        End If

    End Sub

    Private Sub cmdStart_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdStart.Click

        FSMonitor.Path = txtDirectory.Text

        FSMonitor.EnableRaisingEvents = True

        FSMonitor.WaitForChanged(IO.WatcherChangeTypes.All)



        'FSMonitor.Filter = " "

        'FSMonitor.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)

    End Sub

    Private Sub EventLog_EntryWritten(ByVal sender As System.Object, ByVal e As System.Diagnostics.EntryWrittenEventArgs)

        ListBox1.Items.Add(e.Entry)

    End Sub

    Private Sub cmdEventLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        'EventLog.EnableRaisingEvents = True

    End Sub

End Class


Вот так!

пользуем кнопочку VB или теги [syntax="vb"], тогда код читаеться легче : Ramzes

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 21.06.2006 (Ср) 23:44

Первый пример работает.
Второй заработал после того как закоментировал строку
Код: Выделить всё
FSMonitor.WaitForChanged(IO.WatcherChangeTypes.All)
в обработчике cmdStart_Click
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

TohaSan
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 20.03.2006 (Пн) 17:10

Сообщение TohaSan » 22.06.2006 (Чт) 9:34

Представляете, у меня тоже заработал пример, где используется консольное приложение!!! :D :D :D
Странность состоит только в следующем: вчера, да и раньше, он у меня не работал! Это говорю с полной уверенностью, т.к. я несколько раз проверял. Хотел уже написать, что у меня оба проекта одинаково хорошо работают никак. Но решил запустить проект, и всё заработало! Класс! :D :D :D
Спасибо!!! :D

asharky
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 22.06.2004 (Вт) 0:39
Откуда: Батоны-ларьки-поребрики...

Сообщение asharky » 17.10.2007 (Ср) 18:38

Вот такая ерунда в сети стоит http://www.dlink.ru/products/prodview.php?type=32&id=470 и с ней не хочет работать FileSystemWatcher. Не видит изменений файлов.

Операционка там что-то Unix'о-подобное. "Клиент" - Windows XP. Может кто сталкивался с похожим траблом?
В культурной столице проститутки берут книгами...

asharky
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 22.06.2004 (Вт) 0:39
Откуда: Батоны-ларьки-поребрики...

Сообщение asharky » 20.10.2007 (Сб) 14:53

Никто значит не сталкивался :roll:
В культурной столице проститутки берут книгами...

asharky
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 22.06.2004 (Вт) 0:39
Откуда: Батоны-ларьки-поребрики...

Сообщение asharky » 20.10.2007 (Сб) 19:59

По другому спрошу: как, и чем, отследить изменения файлов на сетевых дисках? Есть какой-нибудь штатный контрол для этого дела?
В культурной столице проститутки берут книгами...

asharky
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 22.06.2004 (Вт) 0:39
Откуда: Батоны-ларьки-поребрики...

Сообщение asharky » 27.10.2007 (Сб) 20:52

Ещё раз переформулирую вопрос.

Мне нужен контрол для .NET который наследуется от FilesystemWatches, но может следить за изменением файлов не только в локальной системе, но и на сетевых дисках. Подозреваю, что писать его самому не резон - все написано до нас :)

Вопрос: где вообще принято у VB.NET программистов искать свободно распространяемые контролы? Киньтесь ссылкой или ключевыми словами.
В культурной столице проститутки берут книгами...

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 27.10.2007 (Сб) 23:32

вообще-то принято искать там же где и всегда

Google
Яndex

ну можешь и тут посмотреть

asharky
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 22.06.2004 (Вт) 0:39
Откуда: Батоны-ларьки-поребрики...

Сообщение asharky » 27.10.2007 (Сб) 23:57

Ramzes писал(а):вообще-то принято искать там же где и всегда

Google
Яndex

ну можешь и тут посмотреть
Спасибо тебе, добрый человек. Ну это-то я знал и так разумеется www.codeproject.com , а вот с этим Google
Яndex явилось для меня полным откровением. И не подозревал даже, что в сети бывают такие полезные сервера.

ЗЫ. А вообще может быть есть смысл поставить вместо всего этого форума безусловную переадресацию на разноцветные ссылки? Ну чтобы своё время людям не тратить понапрасну :)
В культурной столице проститутки берут книгами...

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 28.10.2007 (Вс) 15:21

asharky писал(а):
Ramzes писал(а):вообще-то принято искать там же где и всегда

Google
Яndex

ну можешь и тут посмотреть
Спасибо тебе, добрый человек. Ну это-то я знал и так разумеется www.codeproject.com , а вот с этим Google
Яndex явилось для меня полным откровением. И не подозревал даже, что в сети бывают такие полезные сервера.

ЗЫ. А вообще может быть есть смысл поставить вместо всего этого форума безусловную переадресацию на разноцветные ссылки? Ну чтобы своё время людям не тратить понапрасну :)


я не понял. Ты спросил где программисты ищут свободные контролы, я тебе сказал, что не так? я даже посоветовал тебе сайт, где много всего интересного и возможно есть интересующая тебя фича :roll:

asharky
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 22.06.2004 (Вт) 0:39
Откуда: Батоны-ларьки-поребрики...

Сообщение asharky » 28.10.2007 (Вс) 15:39

Ramzes писал(а):я не понял. Ты спросил где программисты ищут свободные контролы, я тебе сказал, что не так? я даже посоветовал тебе сайт, где много всего интересного и возможно есть интересующая тебя фича :roll:
Объясняю, раз не понятно.

Бывают вопросы общего характера, а бывают предметные. И на вторые, как минимум, странно давать ответ в стиле Яндекс.Ру. Иначе получатся полная фигня: всякий, кто знает про поисковые машины в сети, может давать ответы на любые вопросы. Но для чего тогда специализированные форумы существуют?

ЗЫ. Ничего не требую ни от форума ни от кого-либо лично, разумеется. Отсутствие ответа - тоже ответ и вполне удовлетворительный. Вполне бывает так, что никто просто не сталкивался с новой сущностью. Ну промолчали - жаль, но по крайней мере не выглядит издевательством.

ЗЫЫ. Прошу не обижаться, т.к. цели такой не ставлю :) Просто я объяснил причины своего недоумения и досады от расхождения ожиданий и действительности :)
В культурной столице проститутки берут книгами...

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 28.10.2007 (Вс) 18:32

asharky писал(а):
Ramzes писал(а):я не понял. Ты спросил где программисты ищут свободные контролы, я тебе сказал, что не так? я даже посоветовал тебе сайт, где много всего интересного и возможно есть интересующая тебя фича :roll:
Объясняю, раз не понятно.

Бывают вопросы общего характера, а бывают предметные. И на вторые, как минимум, странно давать ответ в стиле Яндекс.Ру. Иначе получатся полная фигня: всякий, кто знает про поисковые машины в сети, может давать ответы на любые вопросы. Но для чего тогда специализированные форумы существуют?

asharky писал(а):Вопрос: где вообще принято у VB.NET программистов искать свободно распространяемые контролы? Киньтесь ссылкой или ключевыми словами.

asharky
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 22.06.2004 (Вт) 0:39
Откуда: Батоны-ларьки-поребрики...

Сообщение asharky » 28.10.2007 (Вс) 19:02

В оригинале выглядит вот так вообще-то:

Ещё раз переформулирую вопрос.

Мне нужен контрол для .NET который наследуется от FilesystemWatches, но может следить за изменением файлов не только в локальной системе, но и на сетевых дисках. Подозреваю, что писать его самому не резон - все написано до нас.

Вопрос: где вообще принято у VB.NET программистов искать свободно распространяемые контролы? Киньтесь ссылкой или ключевыми словами.


Хотя конечно, можно прочитать только часть сообщения:

asharky писал(а):Вопрос: где вообще принято у VB.NET программистов искать свободно распространяемые контролы? Киньтесь ссылкой или ключевыми словами.


Можно ещё сократить:
Киньтесь ссылкой или ключевыми словами.

И даже так:
Киньтесь

Но в общем приношу извинения. Форумулировка моя не четкая была - признаю.
В культурной столице проститутки берут книгами...


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 115

    TopList