Je doit "locké" ma pile en lecture ET en écriture
Le "End SyncLock" est sans doute exécutée implicitement à la fin de la procédure.
Déjà je n'avais pas ajouté le ".SyncRoot" comme foliv57 me le montrais dans son exemple (mais sa ne semble pas changé grand chose dans mon cas ).
Dim/Private/Public MaPile As (New) Queue
'L'instruction SyncLock verrouille un objet ou attend que l'objet soit déverrouillé SyncLock (MaPile.SyncRoot) MaPile.Enqueue(ObjAAjouterDansLaPile) End SyncLock
'L'instruction SyncLock verrouille un objet ou attend que l'objet soit déverrouillé 'On peut remplacer "ValeurLutDansLaPile =" par "Return" dans ce cas le "End SyncLock" sera exécuté implicitement SyncLock (MaPile.SyncRoot) ObjLutDansLaPile = MaPile.Dequeue End SyncLock
Private PileAEcrire As New Queue Private SynchronizedPileAEcrire As Queue = Queue.Synchronized(PileAEcrire)
Dim myQueue As New Queue() Dim mySynchronizedQueue As Queue = Queue.Synchronized(myQueue)
Public Sub AddLigne (...) [...] SyncLock (PileAEcrire) PileAEcrire.Enqueue(MaLigne) End SyncLock [...] End Sub
SyncLock (myQueue.SyncRoot) myQueue.Enqueue(New Object()) End SyncLock
Private Function GetLigneEcrire() As String Return SynchronizedPileAEcrire.Dequeue End Function
mySynchronizedQueue.Dequeue
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate PileAEcrire As New Queue Private SynchronizedPileAEcrire As Queue = Queue.Synchronized(PileAEcrire)
SyncLock (SynchronizedPileAEcrire) SynchronizedPileAEcrire.Enqueue(CreeLigneJournal(e.Row)) End SyncLock
SyncLock (SynchronizedPileAEcrire) Return SynchronizedPileAEcrire.Dequeue End SyncLock
Dim myQueue As New Queue() SyncLock (myQueue.SyncRoot) myQueue.Enqueue(New Object()) End SyncLock
Dim myQueue As New Queue() Dim mySynchronizedQueue As Queue = Queue.Synchronized(myQueue)