I am trying to move some code to some class files in order to clear my code. In one area that I'm having problems with, it reports the progress of events between the object performing the task and the progress bar.
I suppose that the event functions should be placed in a new class, but they also need to update the progress bar in the calling form? Can a class \ object return updates instead of event handlers?
Currently the form has all the code:
Function DoRestore(ByVal SQLServer As String, ByVal BackupFilePath As String, ByVal DatabaseName As String) Dim Server As Server = New Server(SQLServer) Server.ConnectionContext.ApplicationName = Application.ProductName Dim res As Restore = New Restore() Dim dt As DataTable res.Devices.AddDevice(BackupFilePath, DeviceType.File) dt = res.ReadFileList(Server) res.Database = DatabaseName res.PercentCompleteNotification = 1 AddHandler res.PercentComplete, AddressOf RestoreProgressEventHandler AddHandler res.Complete, AddressOf RestoreCompleteEventHandler res.SqlRestoreAsync(Server) While res.AsyncStatus.ExecutionStatus = ExecutionStatus.InProgress Application.DoEvents() End While End Function Private Function RestoreProgressEventHandler(ByVal sender As Object, ByVal e As PercentCompleteEventArgs) 'Update progress bar (e.Percent) End Function Private Sub RestoreCompleteEventHandler(ByVal sender As Object, ByVal e As Microsoft.SqlServer.Management.Common.ServerMessageEventArgs) 'Signal completion End Sub
Used through:
DoRestore(SQLServer, "C:\SQLBACKUP.bak", DatabaseName)
source share