【问题标题】:vb.net Sync Framework 2.1 get filenames to be synced for loggingvb.net Sync Framework 2.1 获取要同步的文件名以进行日志记录
【发布时间】:2011-09-07 21:35:36
【问题描述】:

我正在尝试使用 microsoft 同步框架编写一个简单的同步工具服务。我能够同步两个位置,但我希望能够输出正在使用 log4net 同步的文件。有谁知道我该怎么做?这是我使用的代码:

            Try

            Using _sourceProvider As FileSyncProvider = New FileSyncProvider(_sourceId.GetGuidId, _sourceDir)

                Using _destinationProvider As FileSyncProvider = New FileSyncProvider(_destId.GetGuidId, _destDir)

                    Dim _syncAgent As SyncOrchestrator = New SyncOrchestrator()

                    _syncAgent.LocalProvider = _sourceProvider
                    _syncAgent.RemoteProvider = _destinationProvider
                    _syncAgent.Direction = SyncDirectionOrder.Upload
                    _syncAgent.Synchronize()

                End Using

            End Using

        Catch ex As Exception
            Logger.WriteLog(ElogLevel.INFO, "" & ex.Message & "")
        End Try

提前致谢。


感谢您的帮助,我已经实现了 ApplyChange 事件处理程序,但是在使用 EventHandler 代码时出现以下错误:

_sourceProvider.ApplyingChange += New EventHandler(Of ApplyingChangeEventArgs)(fileSyncProvider_ApplyingChange)
_destinationProvider.ApplyingChange += New EventHandler(Of ApplyingChangeEventArgs)(fileSyncProvider_ApplyingChange)

'Public EventApplyingChange(sender As Object, e As Microsoft.Syncronization.Files.ApplyingChangeEventArgs)'是一个事件,不能直接调用。使用“RaiseEvent”语句来引发事件。

【问题讨论】:

    标签: vb.net log4net


    【解决方案1】:

    您可以利用FileSyncProviderApplyingChange 事件。

    设置:

    Public Event ApplyingChange As EventHandler(Of ApplyingChangeEventArgs)
    Dim handler As EventHandler(Of ApplyingChangeEventArgs)
    
    AddHandler _sourceProvider.ApplyingChange, handler
    AddHandler _destinationProvider.ApplyingChange, handler
    

    实现ApplyingChange 事件处理程序:

    Private Sub fileSyncProvider_ApplyingChange(sender As Object, e As ApplyingChangeEventArgs)
        Logger.WriteLog(ElogLevel.INFO, "FileSyncProvider > Applying Change")
        Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & "Change type: {0}", e.ChangeType))
    
        If e.CurrentFileData IsNot Nothing Then
            Logger.WriteLog(ElogLevel.INFO, "Current Data:")
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "{0} Name: {1}", If(e.CurrentFileData.IsDirectory, "Folder", "File"), e.CurrentFileData.Name))
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "Relative Path: {0}", e.CurrentFileData.RelativePath.ToString()))
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "Creation Time: {0}", e.CurrentFileData.CreationTime.ToString()))
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "Last Write Time: {0}", e.CurrentFileData.LastWriteTime.ToString()))
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "Last Access Time: {0}", e.CurrentFileData.LastAccessTime.ToString()))
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "Size: {0}", e.CurrentFileData.Size.ToString()))
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "Attributes: {0}", e.CurrentFileData.Attributes.ToString()))
        End If
    
        If e.NewFileData IsNot Nothing Then   
            Logger.WriteLog(ElogLevel.INFO, "New Data:")
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "{0} Name: {1}", If(e.NewFileData.IsDirectory, "Folder", "File"), e.NewFileData.Name))
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "Relative Path: {0}", e.NewFileData.RelativePath.ToString()))
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "Creation Time: {0}", e.NewFileData.CreationTime.ToString()))
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "Last Write Time: {0}", e.NewFileData.LastWriteTime.ToString()))
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "Last Access Time: {0}", e.NewFileData.LastAccessTime.ToString()))
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "Size: {0}", e.NewFileData.Size.ToString()))
            Logger.WriteLog(ElogLevel.INFO, String.Format(vbLf & vbTab & vbTab & "Attributes: {0}", e.NewFileData.Attributes.ToString()))
        End If
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多