As long as all of your five lists above contain disjoint sets of objects, and as long as the line 

  result.Add(lstAll.resultData); 


is commented out, there is no locking needed. But I guess you are telling us not the whole story, the program above in the current form does not make much sense, since any results are thrown away after processing. So tell us how and in which thread you intend to aggregate the results, then you might get better answers.

When is lock not needed in multithreading
I don't have any Intellisense in SQL Server 2008 R2 Express Management Studio - is this supposed to work?

I am connecting to a SQL Server 2008 R2 Express database on the same machine (no other databases here at home) and I have no Intellisense.

Just wondering if it's supposed to work or is Express crippled?
