【发布时间】:2010-06-06 13:37:48
【问题描述】:
我正在使用以下内容在 VB.NET 中恢复数据库。 这可行,但如果用户单击任何内容,则会导致界面锁定。 另外,我无法让进度标签增量更新,它是空白的,直到备份完成然后显示 100%
Sub DoRestore()
Dim svr As Server = New Server("Server\SQL2008")
Dim res As Restore = New Restore()
res.Devices.AddDevice("C:\MyDB.bak", DeviceType.File)
res.Database = "MyDB"
res.RelocateFiles.Add(New RelocateFile("MyDB_Data", "C:\MyDB.mdf"))
res.RelocateFiles.Add(New RelocateFile("MyDB_Log", "C:\MyDB.ldf"))
res.PercentCompleteNotification = 1
AddHandler res.PercentComplete, AddressOf ProgressEventHandler
res.SqlRestore(svr)
End Sub
这个改动正确吗?:
Private Sub ProgressEventHandler(ByVal sender As Object, ByVal e As PercentCompleteEventArgs)
UpdateProgressBar(e.Percent)
End Sub
Private Sub UpdateProgressBar(ByVal e As String)
ProgressBar.Value = e
Status.Text = e.ToString
End Sub
【问题讨论】:
-
顺便说一句,您可能想编辑此标题,因为您真正要问的是“如何在更新 UI 元素时避免'跨线程操作无效'错误” .这更有可能吸引那些知道答案的人的注意力。
标签: sql-server vb.net multithreading smo