sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan vises statuslinjen, mens du udfører store SQLCommand VB.Net

Her er et nedskæringseksempel på, hvordan man udfører asychrounous arbejde med VB.Net 4.0.

Lad os forestille os, at du har en formular, der har følgende importer,

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

Denne formular har to kontroller

Private WithEvents DoSomthing As Button
Private WithEvents Progress As ProgressBar

Et eller andet sted i din ansøgning har vi en Function kaldet ExecuteSlowStuff , denne funktion svarer til din executeMyQuery . Den vigtige del er Action parameter, som funktionen bruger til at vise, at den gør fremskridt.

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

Lad os sige, at dette arbejde startes ved at klikke på DoSomething Button .

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

Du undrer dig sikkert over, hvor ShowProgress kommer fra, det er den mere rodede smule.

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

Bemærk, at fordi ShowProgress kan påberåbes fra en anden tråd, tjekker den for krydstrådskald. I så fald kalder den sig selv på hovedtråden.



  1. Opret pivotvisning i SQL fra en SQL-tabel

  2. Eliminer og reducer overlappende datointervaller

  3. Gruppering i interval på 5 minutter inden for et tidsinterval

  4. Er der nogen måde at indlejre power bi-rapporter og dashboards i vb.net eller C# desktop-applikation med sql server 2008-database?