Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да се покаже лентата за напредък, докато изпълнявате голям SQLCommand VB.Net

Ето един съкратен пример за това как да правите асинхронна работа с VB.Net 4.0.

Нека си представим, че имате формуляр, който има следните импортирания,

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

Този формуляр има две контроли

Private WithEvents DoSomthing As Button
Private WithEvents Progress As ProgressBar

Някъде във вашето приложение имаме Function наречен ExecuteSlowStuff , тази функция е еквивалент на вашия executeMyQuery . Важната част е Action параметър, който функцията използва, за да покаже, че напредва.

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

Да кажем, че тази работа започва с щракване върху DoSomething Button .

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

Вероятно се чудите къде е ShowProgress идва от, това е по-обърканото.

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

Имайте предвид, че тъй като ShowProgress може да бъде извикан от друга нишка, той проверява за кръстосани извиквания на нишка. В този случай той се извиква в основната нишка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Лесен начин изберете дясната колона като първичен ключ за дадена таблица

  2. Нарушение на ограничението UNIQUE KEY на INSERT WHERE COUNT(*) =0 на SQL Server 2005

  3. Разгръщане на LocalDB на клиентски компютър

  4. Използвайте DATABASEPROPERTYEX(), за да върнете настройките на базата данни в SQL Server

  5. Как да конвертирате DateTime във VarChar