Getting progress reports from a layered worker class?

Posted by Slashdev on Stack Overflow See other posts from Stack Overflow or by Slashdev
Published on 2010-04-15T20:10:56Z Indexed on 2010/04/15 20:13 UTC
Read the original article Hit count: 304

Filed under:
|
|
|

I have a layered worker class that I'm trying to get progress reports from. What I have looks something like this:

public class Form1
{
    private void Start_Click()
    {
        Controller controller = new Controller();

        controller.RunProcess();
    }
}

public class Controller
{
    public void RunProcess()
    {
        Thread newThread = new Thread(new ThreadStart(DoEverything));
        newThread.Start();
    }

    private void DoEverything()
    {
        // Commencing operation...
        Class1 class1 = new Class1();

        class1.DoStuff();

        Class2 class2 = new Class2();

        class2.DoMoreStuff();
    }

}

public class Class1
{
    public void DoStuff()
    {
        // Doing stuff
        Thread.Sleep(1000);

        // Want to report progress here
    }
}

public class Class2
{
    public void DoMoreStuff()
    {
        // Doing more stuff
        Thread.Sleep(2000);

        // Want to report progress here as well
    }
}

I've used the BackgroundWorker class before, but I think I need something a bit more free form for something like this. I think I could use a delegate/event solution, but I'm not sure how to apply it here. Let's say I've got a few labels or something on Form1 that I want to be able to update with class1 and class2's progress, what's the best way to do that?

© Stack Overflow or respective owner

Related posts about c#

Related posts about classes