Ciao sono nuovo del forum e abbastanza acerbo di Vb.Net.
Allora io ho questo problema ve lo riassumo così:
ho 4 thread e 2 file xml. I thread 1 e 2 scrivono sul file A mentre i thread 3 e 4 scrivono sul file B.
Per scrivere usano la funzione writeFileXML (fatta da me). Inizialmente la funzione mi andava a mangiare le nuove righe che andavo a scrivere dai thread concorrenti.
Allora ho ottimizzato aggiungendo alla mia funzione l'istruzione SyncLock. Ho definito un object globale e la funzione è diventata come segue:
Public shared Function writeFileXML(Byval nomefile as object) as String
così facendo sono riuscito a non mangiarmi le righe aggiunte.codice:Public shared Function writeFileXML(Byval nomefile as object) as String SyncLock globalobject ' Codice di scrittura su file nomefile End syncLock end Function
Sorge però il seguente problema, quando il thread 1 lancia la funzione writeFileXML, per scrivere sul file A, diventa bloccante anche per il thread 3 o 4 che vanno a scrivere sul file B.
A questo punto ho pensato di utilizzzare come oggetto per l'istruzione SyncLock il nomefile passato alla funzione writeFileXML, ma questo mi ha dato un altro tipo di problema, il synclock non era più bloccante per nessun thread. Mi spiego meglio, thread 1 parte e richiama la funzione writeFileXML per scrivere sul file A, ma a questo punto parte il thread 2 che anch'esso scrive sul file A, io mi aspettavo che il SyncLock lo bloccasse invece lascia passare anche questo e cominciano a scrivere contemporaneamente sul file A facendomi danni.
Ora mi sorge il dubbio di non aver capito bene come funziona l'istruzione SyncLock, e anche capire se è la cosa che serve per il mio problema.
Potete darmi qualche dritta
Grazie
Davidivo
![]()

Rispondi quotando
