ServerStatus
должен поддерживать собственную синхронизацию, а не внешние клиенты этого класса. При этом вам необходимо провести рефакторинг ServerStatus
и создать несколько поточно-ориентированных (с блокировкой) методов:
Удалите эти свойства: public List<string> PistonQueue { get; set; }
, поскольку даже если вы можете заблокировать эти свойства, вы не сможете контролировать действия клиентов, когда они получат фактический PistonQueue
.
... и заменить такими методами, как (извините, псевдокод, я не могу думать сегодня):
public PistonQueueAdd(string fullPath)
{
lock(_serverStatusSyncRoot)
{
// ...
}
}