Solved

Restarting Backgroundworker Component with in work Compeleted Event VB.Net

Posted on 2009-05-11
4
758 Views
Last Modified: 2013-11-26
hi,

I have some criteria.. I will start the backgrndwrkr component and it will return a result to me,If the result is Something (*Some String) then manipulation will be done automatically by events.. but if result is Nothing then it shud restart the Background worker component from starting.. to put it short i want to restart the background worker in its thread itself.. i searched whole interne but cud not find any thing useful.. my last hope is this place..
0
Comment
Question by:Yogesh_Agarwal
  • 2
  • 2
4 Comments
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 24355687
The THREAD will know if it is going to return Nothing and need restarting....so instead of letting it complete and raise the RunWorkerCompleted() Event, make it restart itself internally with some kind of looping structure such as a While() loop.  You can notify the UI of the restart using the ProgressChanged() event...
0
 

Author Comment

by:Yogesh_Agarwal
ID: 24356403
i am really confused to how to use that loop.. i don know how to use loops for that.. i am really fed of searching it.. can u please tell me?
0
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 24356981
Ok...that was a pretty vague description so hopefully you can glean something from this convoluted example.  It keeps "working" until the result is retrieved in the second half of the current minute:
Public Class Form1
 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Button1.Enabled = False

        BackgroundWorker1.RunWorkerAsync()

    End Sub
 

    Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

        Static R As New Random

        Dim dt As DateTime

        Dim result As Integer

        Do

            System.Threading.Thread.Sleep(R.Next(2000, 7001)) ' do some "work" between 2 and 7 secs long

            dt = DateTime.Now

            result = dt.Second

            If result < 30 Then

                BackgroundWorker1.ReportProgress(-1, dt)

            End If

        Loop While result < 30

        e.Result = dt.TimeOfDay.TotalMilliseconds

    End Sub
 

    Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged

        If e.ProgressPercentage = -1 Then

            Label1.Text = "Restarted @ " & e.UserState

        End If

    End Sub
 

    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted

        Label1.Text = "Completed: " & e.Result

        Button1.Enabled = True

    End Sub
 

End Class

Open in new window

0
 

Author Closing Comment

by:Yogesh_Agarwal
ID: 31580149
nice work..
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In my previous article (http://www.experts-exchange.com/Programming/Languages/.NET/.NET_Framework_3.x/A_4362-Serialization-in-NET-1.html) we saw the basics of serialization and how types/objects can be serialized to Binary format. In this blog we wi…
The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now