Gleichzeitiges HashSet <T> in .NET Framework?

Ich habe folgende Klasse.

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

Ich muss das Feld "Daten" aus verschiedenen Threads ändern, daher möchte ich einige Meinungen zu meiner aktuellen thread-sicheren Implementierung haben.

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);
    }
}

Gibt es eine bessere Lösung, um direkt zum Feld zu gehen und es vor dem gleichzeitigen Zugriff mehrerer Threads zu schützen?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage