Czy nie byłoby to przesadą i konieczne jest tylko jedno z nich? Wyszukiwanie i znajdowanie różnych wpisów dotyczących wzajemnego wykluczania i blokad w C# here i here.
Przykład:
W naszej aplikacji mamy funkcję, która obraca wiele wątków ponownego połączenia, a wewnątrz tego wątku używamy Mutex
i lock
. Czy nie zablokuje dostępu do tej sekcji kodu i uniemożliwi aktualizację connect
przez inny wątek?Czy blokady i Mutexy w języku C# powinny być używane razem?
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();
Więcej informacji:
to w sposób WebService ASP.NET nie działa w Ogrodzie internetowej.
należy jednak odpowiednio nazwać maszynę. –
Dobra sprawa, mam nadzieję, że wyjaśniono to w pierwszym zdaniu. –
Chcesz powiedzieć, że powinienem wyeliminować oświadczenie połowowe i zastąpić je ostatecznie? –