VB.Net/GUI/Background Worker

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

BackgroundWorker Demo

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
   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
    End Sub
    " Cancel the long process.
    Private Sub btnCancel_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles btnCancel.Click
    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
        End If
    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.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"
        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"
        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
        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.Name = "Form1"
        Me.Text = "UseBackgroundWorker"
    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