Cross-thread operation not valid [duplicate]

You can’t. UI operations must be performed on the owning thread. Period.

What you could do, is create all those items on a child thread, then call Control.Invoke and do your databinding there.

Or use a BackgroundWorker

    BackgroundWorker bw = new BackgroundWorker();
    bw.DoWork += (s, e) => { /* create items */ };
    bw.RunWorkerCompleted += (s, e) => { /* databind UI element*/ };

    bw.RunWorkerAsync();

Leave a Comment