que han declarado un diccionario de dicionary:Volviendo un diccionario en C# en un entorno multi-hilo
Dictionary<String, Dictionary<String, String>> values;
tengo un captador de conseguir un diccionario a un índice específico:
public Dictionary<String,String> get(String idx)
{
lock (_lock)
{
return values[moduleName];
}
}
Como se puede ver que estoy trabajando en un entorno multihilo. Mi pregunta es ¿tengo que devolver una copia de mi diccionario con el fin de ser seguro para subprocesos como esto:
public Dictionary<String,String> get(String idx)
{
lock (_lock)
{
return new Dictionary<string, string>(values[moduleName]);
}
}
Si yo no voy a la clase que llama al comprador recibir una copia (por lo que si elimino este diccionario de mi Dictionary<String, Dictionary<String, String>>
¿seguirá funcionando?
Saludos,
Thierry.
Probablemente no deba devolver el diccionario, pero si lo hace, entonces sí, necesita hacer una copia mientras está dentro de un monitor. ¿Puedes describir cuál debería ser el propósito de esta construcción? – Groo
O utilice un [diccionario seguro para subprocesos] (http://msdn.microsoft.com/en-us/library/dd287191.aspx) –
Gracias por su respuesta. –