Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara menampilkan bilah kemajuan saat menjalankan SQLCommand VB.Net besar

Berikut ini adalah contoh singkat bagaimana melakukan Asychrounous Work dengan VB.Net 4.0.

Bayangkan Anda memiliki formulir yang memiliki impor berikut,

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

Formulir itu memiliki dua kontrol

Private WithEvents DoSomthing As Button
Private WithEvents Progress As ProgressBar

Di suatu tempat di aplikasi Anda, kami memiliki Function disebut ExecuteSlowStuff , fungsi ini setara dengan executeMyQuery Anda . Bagian yang penting adalah Action parameter yang digunakan fungsi untuk menunjukkan kemajuan.

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

Katakanlah pekerjaan ini dimulai dengan mengklik DoSomething Button .

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

Anda mungkin bertanya-tanya di mana ShowProgress berasal, itulah bagian yang lebih berantakan.

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

Perhatikan bahwa karena ShowProgress dapat dipanggil dari utas lain, ia memeriksa panggilan lintas utas. Dalam hal ini ia memanggil dirinya sendiri di utas utama.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa membuat kunci utama sebagai AUTOINCREMENT

  2. Permintaan SQL Server Xml dengan beberapa ruang nama

  3. Bagaimana cara membuat kunci komposit dengan SQL Server Management Studio?

  4. Pernyataan INSERT bertentangan dengan batasan FOREIGN KEY - SQL Server

  5. SqlDateTime.MinValue !=DateTime.MinValue, mengapa?