Tech Off Post

Single Post Permalink

View Thread: InvokeRequired, InvokeRequired, InvokeRequired...
  • User profile image
    esoteric

    I'm building a small application with Windows Forms and see this pattern constantly -

            public void Transfer(IList<Hash> items)
            {
                if (InvokeRequired)
                {
                    Invoke(new ProcessDelegate<IList<Hash>>(Transfer), new object[] { items });
                }
                else
                {
                    foreach (var e in items)
                    {
                        hashBindingSource.Add(e);
                        Application.DoEvents();
                    }
                }
            }

    Is there a better way to do this? I imagine having an attribute on the method doing code-injection to create this pattern automatically - including creating any necessary delegate types.

    Oh thread-safe scenegraph - where art thou.