I zadeklarowały słownika dicionary:Wracając do słownika w C# w środowisku wielowątkowym
Dictionary<String, Dictionary<String, String>> values;
Mam getter zdobycia słownika w określonym indeksie:
public Dictionary<String,String> get(String idx)
{
lock (_lock)
{
return values[moduleName];
}
}
As widać, że pracuję w środowisku wielowątkowym. Moje pytanie brzmi, czy muszę powrócić kopię mojego słownika, aby być bezpieczne jak ten wątek:
public Dictionary<String,String> get(String idx)
{
lock (_lock)
{
return new Dictionary<string, string>(values[moduleName]);
}
}
Jeśli nie będzie klasy, która wywołuje getter otrzymać kopię (więc jeśli usunąć ten słownik z mojego Dictionary<String, Dictionary<String, String>>
będzie nadal działał)?
Cheers,
Thierry.
Prawdopodobnie nie powinieneś w ogóle powracać do słownika, ale jeśli tak, to tak, musisz zrobić kopię, gdy znajdujesz się wewnątrz monitora. Czy możesz opisać, jaki powinien być cel tego konstruktu? – Groo
Lub użyj [słownika bezpiecznego dla wątków] (http://msdn.microsoft.com/en-us/library/dd287191.aspx) –
Dziękuję za odpowiedź. –