I want to access property that can be modified by other code and be sure that access to it is thread safe. Of course, this question was already asked and answered.
However, in my particular situation I have different, specific concerns. First of all, the multi-threaded access/modification scenario is, presumably, a rare occasion, and I wouldn't worry about performance on such an occasion. Also, the property itself is pretty big — it's a jarred array of floats that can get up to 4096 by 4096 in size, and I would like to copy it as rarely as possible. And, finally, I want the class interface to be simple to use — which this solution is not, since it requires the user to implicitly lock a special SyncRoot.
Is there a solution which would make my property thread-safe, wouldn't need additional copying and would allow clients to use the getter (setter is private) without having to remember to lock anything?