ServerStatus should support native synchronization, not external clients of this class. In this case, you will need to reorganize ServerStatus and create several thread-safe (with blocking) methods:
Remove these properties: public List<string> PistonQueue { get; set; } public List<string> PistonQueue { get; set; } public List<string> PistonQueue { get; set; } , because even if you can lock inside these properties, you cannot control what clients do when they PistonQueue actual PistonQueue .
... and replace with methods like (sorry pseudocode, I can't think today):
public PistonQueueAdd(string fullPath) { lock(_serverStatusSyncRoot) {
Chris o
source share