Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / C#

Asynchronous execution with anonymous method pattern

2.71/5 (4 votes)
15 Feb 2010CPOL 13.5K  
This is my helper class: public class AsynchronousMethodHelper { private static Delegate _method; private static Delegate _callBack; public static void AsynchronousExecution(Delegate method, Delegate callBack) { _method = method; ...
This is my helper class:

public class AsynchronousMethodHelper
{
    private static Delegate _method;
    private static Delegate _callBack;

    public static void AsynchronousExecution(Delegate method, Delegate callBack)
    {
        _method = method;
        _callBack = callBack;
        BackgroundWorker bgWorker = new BackgroundWorker();
        bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork);
        bgWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgWorker_RunWorkerCompleted);
        bgWorker.RunWorkerAsync();
    }

    private static void bgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        _callBack.DynamicInvoke(null);
    }

    private static void bgWorker_DoWork(object sender, DoWorkEventArgs e)
    {
        _method.DynamicInvoke(null);
    }
}


How to use:

FormProgressBar frmProgress = new FormProgressBar ();
frmProgress.Show();
AsynchronousMethodHelper.AsynchronousExecution(new ThreadStart(delegate()
{
    // anonymous  method for asynchronous execution
    for (int i = 0; i <= 2; i++)
    {
        // fake execution  (delay 2 seconds)
        Thread.Sleep(1000);
    }
}), new ThreadStart(delegate()
{
    // call back
    frmProgress .Hide();
}));

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)