Ваш второй пример кода является определенно не правильным, потому что блокировки только имеют желаемый эффект, когда они используются в весь места, где к переменной получают доступ (и для, добираются и набор), таким образом, эти get
также нуждался бы в блокировке.
Однако при получении и установке поля ссылочного типа, поскольку свойство как это, затем добавлении оператора блокировки не добавляет значения. Присвоения на указатели, как гарантируют, будут атомарными в среде.NET, и если несколько потоков изменяют свойство тогда, у Вас есть свойственное состояние состязания так или иначе (где потоки могут видеть различные значения; это может или не может быть проблемой), таким образом, существует мало точки в блокировке.
Так для того, что это делает, первая часть кода прекрасна. Но ли Вы действительно хотите встроить свойственные условия состязания в многопоточное приложение, другой вопрос.
Исходный код Komodo Edit доступен на Открыть веб-сайт проекта Komodo .