sql >> Database >  >> RDS >> Sqlserver

Hoe de voortgangsbalk weer te geven tijdens het uitvoeren van grote SQLCommand VB.Net

Hier is een kort voorbeeld van hoe u asychrounaal werk kunt doen met VB.Net 4.0.

Stel je voor dat je een formulier hebt met de volgende invoer,

Imports System.Windows.Forms
Imports System.Threading
Imports System.Threading.Tasks

Dat formulier heeft twee besturingselementen

Private WithEvents DoSomthing As Button
Private WithEvents Progress As ProgressBar

Ergens in je applicatie hebben we een Function genaamd ExecuteSlowStuff , deze functie is het equivalent van uw executeMyQuery . Het belangrijkste onderdeel is de Action parameter die de functie gebruikt om te laten zien dat het vooruitgang boekt.

Private Shared Function ExecuteSlowStuff(ByVal progress As Action) As Integer
    Dim result = 0
    For i = 0 To 10000
        result += i
        Thread.Sleep(500)
        progress()
    Next

    Return result
End Function

Laten we zeggen dat dit werk wordt gestart door de klik op de DoSomething Button .

Private Sub Start() Handled DoSomething.Click
    Dim slowStuff = Task(Of Integer).Factory.StartNew(
        Function() ExceuteSlowStuff(AddressOf Me.ShowProgress))
End Sub

Je vraagt ​​je waarschijnlijk af waar ShowProgress vandaan komt, dat is het rommeligere deel.

Private Sub ShowProgress()
    If Me.Progress.InvokeRequired Then
        Dim cross As new Action(AddressOf Me.ShowProgress)
        Me.Invoke(cross)
    Else 
        If Me.Progress.Value = Me.Progress.Maximum Then
            Me.Progress.Value = Me.Progress.Minimum
        Else
            Me.Progress.Increment(1)
        End If

        Me.Progress.Refresh()
    End if
End Sub

Merk op dat omdat ShowProgress kan worden aangeroepen vanuit een andere thread, het controleert op cross-thread-oproepen. In dat geval roept het zichzelf op in de hoofdthread.



  1. Probleem met Ruby on Rails-installatie - Hoe gebruik ik de WAMP MySQL-installatie?

  2. MySQL Langzaam bij deelnemen. Enige manier om te versnellen

  3. php while-lusvariabele voor elke derde div

  4. AWS RDS-back-upmethoden