Często widzę taki kod, który jest shown here, tj. Gdy obiekt jest przydzielany, a następnie używany jako "obiekt blokady".Blokowanie obiektu
Wydaje mi się, że można użyć dowolnego obiektu do tego, w tym samego zdarzenia, jako obiektu blokady. Po co przydzielać nowy obiekt, który nic nie robi? Rozumiem, że wywołanie funkcji lock() na obiekcie nie powoduje zmiany samego obiektu, ani też nie blokuje go przed użyciem, jest po prostu używane jako symbol zastępczy dla wielu instrukcji blokowania do zakotwiczenia.
public class Shape : IDrawingObject, IShape
{
// Create an event for each interface event
event EventHandler PreDrawEvent;
event EventHandler PostDrawEvent;
object objectLock = new Object();
// Explicit interface implementation required.
// Associate IDrawingObject's event with
// PreDrawEvent
event EventHandler IDrawingObject.OnDraw
{
add
{
lock (objectLock)
{
PreDrawEvent += value;
}
}
remove
{
lock (objectLock)
{
PreDrawEvent -= value;
}
}
}
}
Moje pytanie brzmi: czy to naprawdę dobra rzecz?
(patrz aktualizacja, btw) –