У меня проблема с многопоточностью в моем приложении.
Как часто в случае с многопоточностью, это не происходит постоянно.Иногда в этом коде возникает исключение collectionChanged:
SyncLock _padLock
System.Threading.Monitor.Enter(serie)
For Each dat In serie.Lignes
WriteLine(dat.Columns(), False, 0, False)'exception here
Next
System.Threading.Monitor.Exit(serie)
End SyncLock
В основном серия содержит строки, которые являются массивами объектов.
Почему другой поток может изменять серию, если у меня есть блокировка монитора для этого объекта?
Кроме того, я не вижу, когда разделы заблокированы в VS.Есть ли конкретный способ сделать это?
Редактировать:
Я изменил код, чтобы блокировка была выполнена правильно.Эта ошибка исчезла.Но сейчас я пытаюсь выяснить еще одну ошибку, которая у меня есть.Это действительно сложно, потому что иногда я получаю неожиданный результат (в основном из-за гонки), но я никогда не смогу воспроизвести его, пока в моем коде есть точки останова.
Это действительно сложная ситуация.