Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách hiển thị thanh tiến trình trong khi thực thi VB.Net SQLCommand lớn

Đây là một ví dụ cụ thể về cách thực hiện Asychrounous Work với VB.Net 4.0.

Hãy tưởng tượng bạn có một biểu mẫu có các lần nhập sau,

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

Biểu mẫu đó có hai điều khiển

Private WithEvents DoSomthing As Button
Private WithEvents Progress As ProgressBar

Ở đâu đó trong ứng dụng của bạn, chúng tôi có Function được gọi là ExecuteSlowStuff , hàm này tương đương với executeMyQuery của bạn . Phần quan trọng là Action tham số mà hàm sử dụng để hiển thị nó đang tiến triển.

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

Giả sử công việc này được bắt đầu bằng cách nhấp vào DoSomething Nút Button .

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

Có thể bạn đang thắc mắc ShowProgress ở đâu đến từ, đó là bit lộn xộn hơn.

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

Lưu ý rằng vì ShowProgress có thể được gọi từ một luồng khác, nó kiểm tra các cuộc gọi luồng chéo. Trong trường hợp đó, nó tự gọi ra trên chuỗi chính.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lưu trữ tệp trong SQL Server

  2. Cách sử dụng Câu lệnh GO trong SQL Server để Chèn Bản ghi trong Cột Định danh - Hướng dẫn SQL Server / T-SQL Phần 42

  3. Gọi thủ tục được lưu trữ bằng VBA

  4. Chuỗi kết nối cho localdb cho phiên bản 11 là gì

  5. Làm thế nào để tìm lý do bế tắc trong máy chủ sql ro14?