1

I am currently getting exceptions when modifying an IBindingList on multiple threads. Does anyone have a threadsafe version before I write my own?

dsolimano
  • 8,870
  • 3
  • 48
  • 63
Iain
  • 2,500
  • 1
  • 20
  • 24

2 Answers2

2

I think you'll find this an incredibly difficult task. The easier path would be to prevent multiple-thread access with a lock:

void AddItemToList(object o)
{
    lock(myBindingList)
    {
        myBindingList.Add(o);
    }
}

Look at the lock statement docs for more info.

Ben Straub
  • 5,675
  • 3
  • 28
  • 43
  • 1
    Shouldn't that be lock (_mySyncObject)? – ilitirit Sep 29 '08 at 13:32
  • 3
    That's insufficient. Data binding won't respect your lock. When the binding list changes, the UI will immediately attempt to update and you'll get a cross thread error. – TrueWill Dec 14 '11 at 18:36
1

Only just found this post... do you mean like this?

Marc Gravell
  • 1,026,079
  • 266
  • 2,566
  • 2,900
  • 1
    Bit of a shallow implementation. What about all the other zillions of methods that would need to be syncrononized (not least of which: GetEnumerator())? – piers7 Mar 26 '10 at 04:10