Significa modificare i tuoi metodi threadWork e threadWork2 in
public void threadWork()
{
lock (syncObject)
{
var k = from o in mEntitiesInCondivisione.E3
select o;
foreach (E3 kk in k)
kk.CampoE3 = "sds";
}
}dove syncObject è un oggetto qualsiasi condiviso tra i due thread, nel tuo esempio potrebbe essere dichiarato all'interno della classe
private object syncObject = new object();
Il lock garantisce che un solo thread per volta utilizzi l'object context, dato che lo statement lock invocato dal thread numero 2 resta bloccato finchè il thread 1 non è uscito dal blocco. Ovviamente così ti giochi il parallelismo, ma se non è supportato non puoi farci granché.
Ciao,
m.