L'idea mi è venuta usando SWT, che ha una classe BusyIndicator atta a "decorare" una qualsiasi operazione con il mouse a clessidra...

Posto il codice senza formattazione, sorry...

namespace Helpers
{
    public static class BusyIndicator
    {
        private static readonly AsyncCallback   nullCallback    = delegate { };
        private static readonly object[]        emptyArray      = new object[] { };

        public static void ShowWhile(Control control, ThreadStart method)
        {
            if (method == null)
                throw new ArgumentException("Missing method definition", "method");

            if (control == null)
            {
                method.BeginInvoke(nullCallback, emptyArray);
                return;
            }

            control.Cursor = Cursors.WaitCursor;
            MethodInvoker callback = delegate   { control.Cursor = Cursors.Default; };
            AsyncCallback invoke   = delegate   { control.Invoke(callback); };
            method.BeginInvoke(invoke, emptyArray);           
        }
    }
}

L'uso è fin troppo banale...
BusyIndicator.ShowWhile(this, delegate
{
    // Do stuff
}

Critiche, suggerimenti, insulti come commenti al post, please :)

P.S: è mezz'ora che provo ad inserirlo su CodeKeep, ma al momento di postare... RuntimeError :(

Technorati Tags: ,

Powered by ScribeFire.