Я пытаюсь переместить некоторый код в некоторые файлы классов, чтобы очистить мой код. Одна из проблем, с которыми я сталкиваюсь, - это отчет о ходе событий между объектом, выполняющим задачу, и индикатором выполнения.
Я полагаю, функции событий должны быть помещены в новый класс, но им также необходимо обновить индикатор выполнения в вызывающей форме? Может ли класс \ объект возвращать обновления вместо обработчиков событий?
На данный момент форма имеет весь код:
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
Используется через:
DoRestore(SQLServer, "C:\SQLBACKUP.bak", DatabaseName)