D
dgleeson3
Hello all
Yes I know its been done before, but something silly is killing me on
this.
I have the standard progress bar and worker thread scenario with
progress of the worker thread being fed back to the main UI and
displayed on the progress bar. I have a delegate and am using
BeginInvoke. But the progress bar is not updating.
I have simplified my code below(and also built and tested this code).
Basic form1 with progress bar and button nothing else.
--------------------------------------------------------------------------------------------
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Threading
Imports System.IO
Public Class Form1
Dim worker As System.Threading.Thread ' Thread
Dim worker_obj As New worker_class ' Object from
worker class
Public Sub New()
Me.InitializeComponent()
'ProgressBar1
ProgressBar1.Name = "ProgressBar1"
ProgressBar1.Maximum = 100
ProgressBar1.Value = 10
End Sub
Sub UpdateProgressDisplay(ByVal Value_for_progress_bar As Integer)
ProgressBar1.Value = Value_for_progress_bar
Application.DoEvents()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
worker = New Thread(AddressOf
worker_obj.DoRemoteCommunications)
' Now actually start the comms thread.
worker.Start()
End Sub
End Class
Public Class worker_class
' Set up delegate for assync function call.
--------------------------------
Public Delegate Sub Async_Update_Progress_caller(ByVal
Value_for_progress_bar As Integer)
Public Sub DoRemoteCommunications()
Console.WriteLine("Comms worker thread started.....")
' Set up delegate to allow asynchronous calls between threads.
Dim caller As New Async_Update_Progress_caller(AddressOf
Form1.UpdateProgressDisplay)
' Initiate the asynchronous call.
Dim result As IAsyncResult
result = caller.BeginInvoke(100, Nothing, Nothing)
Console.WriteLine("Progress value 25 passed ")
Thread.Sleep(3000)
Console.WriteLine("Comms worker thread Finished.")
End Sub
End Class
--------------------------------------------------------------------------------------------
Many thanks for any help.
Denis
_______________________
http://www.CentronSolutions.com
Yes I know its been done before, but something silly is killing me on
this.
I have the standard progress bar and worker thread scenario with
progress of the worker thread being fed back to the main UI and
displayed on the progress bar. I have a delegate and am using
BeginInvoke. But the progress bar is not updating.
I have simplified my code below(and also built and tested this code).
Basic form1 with progress bar and button nothing else.
--------------------------------------------------------------------------------------------
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Threading
Imports System.IO
Public Class Form1
Dim worker As System.Threading.Thread ' Thread
Dim worker_obj As New worker_class ' Object from
worker class
Public Sub New()
Me.InitializeComponent()
'ProgressBar1
ProgressBar1.Name = "ProgressBar1"
ProgressBar1.Maximum = 100
ProgressBar1.Value = 10
End Sub
Sub UpdateProgressDisplay(ByVal Value_for_progress_bar As Integer)
ProgressBar1.Value = Value_for_progress_bar
Application.DoEvents()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
worker = New Thread(AddressOf
worker_obj.DoRemoteCommunications)
' Now actually start the comms thread.
worker.Start()
End Sub
End Class
Public Class worker_class
' Set up delegate for assync function call.
--------------------------------
Public Delegate Sub Async_Update_Progress_caller(ByVal
Value_for_progress_bar As Integer)
Public Sub DoRemoteCommunications()
Console.WriteLine("Comms worker thread started.....")
' Set up delegate to allow asynchronous calls between threads.
Dim caller As New Async_Update_Progress_caller(AddressOf
Form1.UpdateProgressDisplay)
' Initiate the asynchronous call.
Dim result As IAsyncResult
result = caller.BeginInvoke(100, Nothing, Nothing)
Console.WriteLine("Progress value 25 passed ")
Thread.Sleep(3000)
Console.WriteLine("Comms worker thread Finished.")
End Sub
End Class
--------------------------------------------------------------------------------------------
Many thanks for any help.
Denis
_______________________
http://www.CentronSolutions.com