VB.Net/GUI/Background Worker

Материал из VB Эксперт
Перейти к: навигация, поиск

BackgroundWorker Demo

<source lang="vbnet"> Imports System Imports System.Data Imports System.Collections Imports System.Windows.Forms Imports System.Drawing Imports System.Data.SqlClient public class MainClass

  Shared Sub Main()
      Dim form1 As Form = New Form1
      Application.Run(form1)
  End Sub

End Class

Public Class Form1

   " Start the long process.
   Private Sub btnStartProcess_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnStartProcess.Click
       " Get ready.
       btnStartProcess.Enabled = False
       btnCancel.Enabled = True
       prgLongProcess.Value = 0
       " Start the worker.
       bgrLongProcess.WorkerReportsProgress = True
       bgrLongProcess.WorkerSupportsCancellation = True
       bgrLongProcess.RunWorkerAsync()
   End Sub
   " Cancel the long process.
   Private Sub btnCancel_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles btnCancel.Click
       bgrLongProcess.CancelAsync()
   End Sub
   " Display the progress.
   Private Sub bgrLongProcess_ProgressChanged(ByVal sender As Object, _
    ByVal e As System.ruponentModel.ProgressChangedEventArgs) _
    Handles bgrLongProcess.ProgressChanged
       prgLongProcess.Value = e.ProgressPercentage
   End Sub
   " The worker is done.
   Private Sub bgrLongProcess_RunWorkerCompleted(ByVal sender As Object, _
    ByVal e As System.ruponentModel.RunWorkerCompletedEventArgs) _
    Handles bgrLongProcess.RunWorkerCompleted
       btnStartProcess.Enabled = True
       btnCancel.Enabled = False
   End Sub
   Private Sub bgrLongProcess_DoWork(ByVal sender As Object, _
    ByVal e As System.ruponentModel.DoWorkEventArgs) Handles bgrLongProcess.DoWork
       For i As Integer = 1 To 10000
           For j As Integer = 1 To 10000
           Next j
           If bgrLongProcess.CancellationPending Then Exit Sub
           bgrLongProcess.ReportProgress(CInt(100 * i / 10000))
       Next i
   End Sub

End Class

<Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _ Partial Public Class Form1

   Inherits System.Windows.Forms.Form
   "Form overrides dispose to clean up the component list.
   <System.Diagnostics.DebuggerNonUserCode()> _
   Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
       If disposing AndAlso components IsNot Nothing Then
           components.Dispose()
       End If
       MyBase.Dispose(disposing)
   End Sub
   "Required by the Windows Form Designer
   Private components As System.ruponentModel.IContainer
   "NOTE: The following procedure is required by the Windows Form Designer
   "It can be modified using the Windows Form Designer.  
   "Do not modify it using the code editor.
   <System.Diagnostics.DebuggerStepThrough()> _
   Private Sub InitializeComponent()
       Me.btnStartProcess = New System.Windows.Forms.Button
       Me.btnCancel = New System.Windows.Forms.Button
       Me.prgLongProcess = New System.Windows.Forms.ProgressBar
       Me.bgrLongProcess = New System.ruponentModel.BackgroundWorker
       Me.SuspendLayout()
       "
       "btnStartProcess
       "
       Me.btnStartProcess.Location = New System.Drawing.Point(8, 8)
       Me.btnStartProcess.Name = "btnStartProcess"
       Me.btnStartProcess.Size = New System.Drawing.Size(75, 23)
       Me.btnStartProcess.TabIndex = 0
       Me.btnStartProcess.Text = "Start"
       "
       "btnCancel
       "
       Me.btnCancel.Location = New System.Drawing.Point(208, 8)
       Me.btnCancel.Name = "btnCancel"
       Me.btnCancel.Size = New System.Drawing.Size(72, 24)
       Me.btnCancel.TabIndex = 1
       Me.btnCancel.Text = "Cancel"
       "
       "prgLongProcess
       "
       Me.prgLongProcess.Location = New System.Drawing.Point(8, 48)
       Me.prgLongProcess.Name = "prgLongProcess"
       Me.prgLongProcess.Size = New System.Drawing.Size(272, 16)
       Me.prgLongProcess.TabIndex = 2
       "
       "Form1
       "
       Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
       Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
       Me.ClientSize = New System.Drawing.Size(288, 75)
       Me.Controls.Add(Me.prgLongProcess)
       Me.Controls.Add(Me.btnCancel)
       Me.Controls.Add(Me.btnStartProcess)
       Me.Name = "Form1"
       Me.Text = "UseBackgroundWorker"
       Me.ResumeLayout(False)
   End Sub
   Friend WithEvents btnStartProcess As System.Windows.Forms.Button
   Friend WithEvents btnCancel As System.Windows.Forms.Button
   Friend WithEvents prgLongProcess As System.Windows.Forms.ProgressBar
   Friend WithEvents bgrLongProcess As System.ruponentModel.BackgroundWorker

End Class

      </source>