Лучший способ реализовать потокобезопасную Point3DCollection в C# - PullRequest
0 голосов
/ 24 марта 2020

Каков наилучший способ сделать Point3DCollection (и Vector3DCollection) поточно-безопасным ?

Мне нужно создать эти коллекции в главном классе, который вызывает метод из другого класса, в котором я создаю каждую коллекцию для каждого кадра. Коллекции из основного класса предназначены для хранения коллекций из предыдущего кадра, поэтому я могу сравнить их с новыми в вызываемом методе. Я новичок в программировании, так что этот способ может быть не лучшим, не стесняйтесь советовать мне, если это необходимо. Я нашел ConcurrentDictionary потокобезопасную коллекцию, но затем я теряю очень полезное Point3DCollection [Point3D] .X свойство (а также .Y и .Z из них) (или я не нашел способ заставить его работать, это возможно). Кроме того, в конце вызываемого метода я обновляю коллекции из вызывающего класса, чтобы я не мог использовать Freeze или Lock (или по крайней мере это то, что я понял, тоже может быть не так).

Ошибка, которую я получаю, когда оператор if проверяет счетчик коллекции из основного класса: «Вызывающий поток не может получить доступ к этому объекту, потому что другой поток является проприетарным ». Я понимаю ошибку, но не могу найти способ ее исправить.

Может кто-нибудь помочь мне, пожалуйста? Спасибо!

EDIT : ошибка вызывается при попытке доступа к элементу по индексу (collection1 = collection в вызываемом методе работает, но collection1.Add (collection [0]) не ' т например)

...