2016-04-30 6 views
2

Hy all, я новичок на этом форуме, и я итальянский. Прежде всего, я сожалею о языковых ошибках; Кроме того, чтение ответов должно проводиться через много часов из-за различного времени в стране.VB .NET FileSystemWatcher не запускает событие при подключении rdp

Конфигурация: VB .NET 2008 PRO и VB .NET 2008 Express

Мой 2 настольный ПК: 1 WinXP SP3 и 1 является Win7 SP1

Сервер: Windows 2008 R2 Предприятие

рамки .NET: 3.5 SP1

Я разработал приложение WinForms, которое выполняется на сервере 2008; в приложении я использую компонент File System Watcher (FSW) для получения уведомления об удалении файла для папки, находящейся на подключенном ПК. Соединение осуществляется с помощью удаленного рабочего стола (RDP). Когда пользователи, использующие приложение, удаляют файл в этой папке (и приложение делает эту работу и файл на ПК действительно удаляется) Мне нужно, чтобы FSW уведомила об этом событие. У меня нет ошибок в коде, просто FSW не запускает это событие, и поэтому я не получаю никаких уведомлений с ПК. Код для FSW (вставленный ниже) не выполняется. lvwDocFiles - это ListView.

Private Sub fswFiles_Deleted(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles fswFiles.Deleted 

    Try 
     lvwDocFiles.Items.RemoveByKey(e.FullPath) 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 

End Sub 

FSW запускается и запускается, когда пользователи делают удаление. Выше кода выполняется, когда пользователи удаляют файл в локальной папке (папке на сервере), поэтому в этом случае FSW правильно поднимет событие.

Я видел уже следующий пост (спросил 6 лет назад):

FileSystemWatcher Fails to access network drive

, но в C# и отличается от моей ситуации.

На мой взгляд, я думаю, что возможные причины этого:

  1. на ПК конкретный сервис должен быть запущен? Например, я попытался запустить службу оповещения, но ничего не изменилось
  2. Разрешения? Но файл был удален (команда DEL запускается с приложения на сервере и правильно поступает на ПК)
  3. Уведомление начинается с ПК, но не проходит через RDP-соединение?
  4. Уведомление не начинается на ПК? Я не знаю, как исследовать этот и предыдущий пункт (мне нужна конкретная программа для этого?)

Любые предложения будут высоко оценены.

Спасибо всем
Стефано

+0

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

+0

Hy Lectere, спасибо за ваш комментарий. Я переписал сообщение. Надеюсь, теперь все ясно. У меня нет ошибок в коде, поэтому я ничего не могу публиковать. Просто FSW, похоже, не работает, как заявляет Microsoft на MSDN (... работает также на удаленных компьютерах ...) – Steve55

+0

У FSW есть некоторые недостатки. Сообщает ли он о каких-либо ошибках через событие 'Error'? Кроме того, ваш код обработки событий должен быть как можно быстрее, или вы можете пропустить уведомления; но 'MessageBox.Show()' блокирует. Ваша сеть разделяет высокий трафик? – Norman

ответ

1

я решил мою проблему таким образом: - Исключено FSW из проекта - Добавлено 2 пользовательские события, первый (FileChangeEvent) будут подняты из дочерней формы, когда файл delete происходит в дочернем устройстве и передает его в родительскую форму с помощью специальных событийных событий; второй (ChildUpdateList) будет поднят родителем для передачи всем активным дочерним элементам (все экземпляры одной и той же формы), что один ребенок (не всегда один и тот же, в котором происходит удаление) должен обновить список файлов в собственном списке.Это простое и эффективное решение, которое также контролирует удаление файлов в удаленных папках (FSW не работает в этой ситуации).

Спасибо всем, что дает мне комментарии и особую благодарность Колин Ангус Маккей Блог Passing Data Between Forms, в котором я нашел след, чтобы решить и Диего Cattaruzza (MVP) Visual-Basic.it (жаль, что в итальянском), что помогает мне значительно упростить решение Колина.

Stefano