2011-09-07 71 views
0

我正在嘗試使用微軟同步框架編寫一個簡單的同步工具服務。我能夠同步兩個位置,但我希望能夠輸出使用log4net同步的文件。有誰知道我該怎麼做?這裏是我使用的代碼:vb.net同步框架2.1獲取要同步記錄的文件名

  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事件處理程序,但我得到以下錯誤,當我使用事件處理代碼:

_sourceProvider.ApplyingChange + =新的EventHandler(ApplyingChangeEventArgs中)( fileSyncProvider_ApplyingChange)
_destinationProvider.ApplyingChange + =新事件處理程序(ApplyingChangeEventArgs中)(fileSyncProvider_ApplyingChange)

'公共EventApplyingChange(發送者爲對象,例如作爲Microsoft.Syncronization.Files.ApplyingChangeEventArgs)' 是一個事件,並且不能直接調用。使用'RaiseEvent'語句來引發一個事件。

+0

修正我的代碼。抱歉。 –

回答

0

您可以利用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