Concurrent HashSet <T> w .NET Framework?

Mam następującą klasę.

class Test{
    public HashSet<string> Data = new HashSet<string>();
}

Muszę zmienić pole „Dane” z różnych wątków, więc chciałbym uzyskać kilka opinii na temat mojej obecnej bezpiecznej implementacji wątku.

class Test{
    public HashSet<string> Data = new HashSet<string>();

    public void Add(string Val){
            lock(Data) Data.Add(Val);
    }

    public void Remove(string Val){
            lock(Data) Data.Remove(Val);
    }
}

Czy istnieje lepsze rozwiązanie, aby przejść bezpośrednio do pola i chronić go przed jednoczesnym dostępem przez wiele wątków?

questionAnswers(5)

yourAnswerToTheQuestion