Solved

Restarting Backgroundworker Component with in work Compeleted Event VB.Net

Posted on 2009-05-11
4
743 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

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.

747 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

9 Experts available now in Live!

Get 1:1 Help Now