Kiedyś napotykałem ten sam problem. Jeśli aplikacja z wątkami używa tego samego obiektu kontekstowego dla wszystkich wątków, mamy do czynienia z tego rodzaju problemami. Utwórz oddzielne obiekty kontekstowe dla każdego wątku. o stanach bytów w Kontekście.
List<Task> tasks = new List<Task>();
foreach (var item in list)
{
ObjectContext oContext = new ObjectContext("MyConnection");
Task t = Task.Factory.StartNew(() =>
{
this.Update(item,oContext);
});
tasks.Add(t);
}
Task.WaitAll(tasks.ToArray());