It was only an example. You don't use foreach but probably the problem is that while DataBind() method enumerates over the TestCollection another piece of code (maybe the same but from another thread) is doing the same. So try to lock the code that acess TestCollection before use it: lock (TestCollection) { ddlTest.DataSource= TestCollection; ddlTest.DataBind(); } paco