Вы не можете изменять коллекцию, пока выполняете ее.Попробуйте вместо этого вызвать Clear
.
Кроме того, постарайтесь не использовать Hashtable
в новом коде.Если у вас есть выбор, используйте Dictionary<TKey, TValue>
.
Ваш сервер заходит в тупик, потому что Monitor.Exit
не достигается, если в строке ранее возникло исключение.Вы можете исправить это, поместив этот код в блок finally.Но вместо использования Monitor
я предлагаю вам использовать lock
, поскольку это автоматически снимает блокировку даже при наличии исключений.
Со всеми этими изменениями ваш код становится намного проще:
lock (dict)
{
dict.Clear();
}