Разве это не будет излишним и только один из них необходим? Я искал и нашел разные сообщения о взаимном исключении и замках в C# here и here.
Пример:
В нашем приложении у нас есть функция, которая объединяет несколько потоков повторного подключения и внутри этой нити мы используем Mutex
и lock
. Разве lock
не блокирует доступ к этому разделу кода и предотвращает обновление connect
от любого другого потока?Должны использоваться замки и мьютексы в C#
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();
Дополнительная информация:
Это находится во WebService ASP.NET не работает в веб-сада.
он должен быть назван соответствующим образом, чтобы быть специфичным для машины. –
Хороший вопрос, я надеюсь, уточнил, что в первом предложении. –
Вы говорите, что я должен исключить инструкцию catch и заменить ее наконец? –