ASP.NET Core singleton with a thread-safe property that can be changed
That will lock it down for sure.  If you know you will have more reads then writes, which is common, you should look at the ReaderWriterLockSlim class.   What you have will only allow one read and one write and they all queue up in line waiting their turn.  The ReaderWriterLockSlim class will still only allow one write at a time but allow multiple reads at a time.