所有人,我是这个论坛上的新手,我是意大利人。首先,我为语言错误感到抱歉;此外,由于国家时间不同,阅读回复应该是在很长时间之后。
配置:VB .NET 2008 PRO和VB .NET 2008 EXpress
我的2台台式电脑:1台是WinXP SP3,1台是Win7 SP1
服务器:Windows 2008 R2 Enterprise
.NET framework :3.5 SP1
我开发了一个在服务器2008上运行的WinForms应用程序;在应用程序中,我使用文件系统观察程序(FSW)组件来接收有关连接的PC上的文件夹的文件删除通知。通过远程桌面(RDP)进行连接。当用户使用该应用程序删除此文件夹上的文件时(应用程序执行此操作并且PC上的文件确实已删除)我需要FSW通知该事件。我在代码中没有任何错误,只是FSW不会触发事件,所以我没有收到来自PC的任何通知。 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#中,与我的情况不同。
在我看来,我认为可能的原因是:
任何建议都将受到高度赞赏。
感谢所有人 斯特凡诺
答案 0 :(得分:1)
我用这种方式解决了我的问题: - 从项目中删除了FSW - 添加了2个自定义事件,当子文件中发生文件删除时,将从子窗体中引发第一个(FileChangeEvent),并通过自定义事件标记将其传递给父窗体;父进程将引发第二个(ChildUpdateList)与所有活动子进程(同一表单的所有实例)进行通信,即一个子进程(并不总是与发生删除相同)必须更新自己列表视图中的文件列表。这是一个简单而好的解决方案,它还控制远程文件夹上的文件删除(FSW在这种情况下不起作用)。
感谢所有这些给了我评论并特别感谢Colin Angus MacKay博客Passing Data Between Forms,其中我找到了解决的痕迹和Diego Cattaruzza(MVP)Visual-Basic.it(对不起,这是意大利语)这有助于我大大简化Colin解决方案。
斯特凡诺