Imports System
Imports System.ComponentModel
Imports System.Threading
Imports System.Windows.Forms
Public Class frmUI
Inherits Form
Delegate Sub SetTextCallback(ByVal [text] As String)
Private demoThread As Thread = Nothing
Private WithEvents backgroundWorker1 As BackgroundWorker
Friend WithEvents setTextSafeBtn As System.Windows.Forms.Button
Private components As System.ComponentModel.IContainer = Nothing
Friend WithEvents prgBar As System.Windows.Forms.ProgressBar
Friend WithEvents lblProgress As System.Windows.Forms.Label
Private worker As clsWorker
Public Sub New()
InitializeComponent()
worker = New clsWorker(Me)
prgBar.Maximum = 100
prgBar.Minimum = 0
End Sub
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso (components IsNot Nothing) Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
Private Sub setTextSafeBtn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles setTextSafeBtn.Click
demoThread = New Thread(New ThreadStart(AddressOf worker.work))
demoThread.Start()
End Sub
Friend Sub UpdateUI(ByVal [text] As String)
' InvokeRequired required compares the thread ID of the
' calling thread to the thread ID of the creating thread.
' If these threads are different, it returns true.
If Me.lblProgress.InvokeRequired Then
Dim d As New SetTextCallback(AddressOf UpdateUI)
Me.Invoke(d, New Object() {[text]})
Else
Me.lblProgress.Text = [text]
Me.prgBar.Increment(1)
End If
End Sub
#Region "Windows Form Designer generated code"
Private Sub InitializeComponent()
Me.backgroundWorker1 = New System.ComponentModel.BackgroundWorker
Me.setTextSafeBtn = New System.Windows.Forms.Button
Me.prgBar = New System.Windows.Forms.ProgressBar
Me.lblProgress = New System.Windows.Forms.Label
Me.SuspendLayout()
'
'setTextSafeBtn
'
Me.setTextSafeBtn.Location = New System.Drawing.Point(12, 28)
Me.setTextSafeBtn.Name = "setTextSafeBtn"
Me.setTextSafeBtn.Size = New System.Drawing.Size(81, 23)
Me.setTextSafeBtn.TabIndex = 4
Me.setTextSafeBtn.Text = "Run Process"
Me.setTextSafeBtn.UseVisualStyleBackColor = True
'
'prgBar
'
Me.prgBar.Location = New System.Drawing.Point(12, 12)
Me.prgBar.Name = "prgBar"
Me.prgBar.Size = New System.Drawing.Size(239, 13)
Me.prgBar.Style = System.Windows.Forms.ProgressBarStyle.Continuous
Me.prgBar.TabIndex = 5
'
'lblProgress
'
Me.lblProgress.AutoSize = True
Me.lblProgress.Location = New System.Drawing.Point(185, 28)
Me.lblProgress.Name = "lblProgress"
Me.lblProgress.Size = New System.Drawing.Size(0, 13)
Me.lblProgress.TabIndex = 6
'
'frmUI
'
Me.ClientSize = New System.Drawing.Size(268, 60)
Me.Controls.Add(Me.lblProgress)
Me.Controls.Add(Me.prgBar)
Me.Controls.Add(Me.setTextSafeBtn)
Me.Name = "frmUI"
Me.Text = "Form1"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub 'InitializeComponent
#End Region
<STAThread()> _
Shared Sub Main()
Application.EnableVisualStyles()
Application.Run(New frmUI())
End Sub
End Class