¿No sería esto exagerado y solo uno de estos es necesario? He buscado y encontrado diferentes publicaciones sobre Exclusión mutua y bloqueos en C# here y here.
Ejemplo:
En nuestra aplicación, tenemos una función que hace girar múltiples hilos de reconexión y dentro de este hilo usamos un Mutex
y un lock
. ¿No bloquearía lock
el acceso a esta sección de código y evitaría que connect
fuera actualizado por algún otro hilo?Deberían usarse bloqueos y mutexes en C# juntos
bool connect = false;
Mutex reconnectMutex = new Mutex(false, "Reconnect_" + key);
try
{
lock(site)
{
if(site.ContainsKey(key))
{
siteInfo = (SiteInfo)site[key];
if(reconnectMutex.WaitOne(100, true))
{
connect = true;
}
}
}
if (connect)
{
// Process thread logic
}
}
catch
{}
reconnectMutex.ReleaseMutex();
Más información:
Esto es en un servicio Web ASP.NET no se ejecuta en un jardín Web.
tiene que ser nombrado en consecuencia para ser específico de la máquina, sin embargo. –
Buen punto, espero haber aclarado eso en la primera oración. –
¿Estás diciendo que debería eliminar la declaración catch y reemplazarla por una finalmente? –