मुझे अक्सर ऐसे कोड दिखाई देते हैं जो shown here है, यानी जहां ऑब्जेक्ट आवंटित किया जाता है और फिर "लॉक ऑब्जेक्ट" के रूप में उपयोग किया जाता है।किसी ऑब्जेक्ट पर लॉकिंग
ऐसा लगता है कि आप इस के लिए किसी ऑब्जेक्ट का उपयोग कर सकते हैं, जिसमें ईवेंट लॉक ऑब्जेक्ट भी शामिल है। एक नई वस्तु आवंटित क्यों करें जो कुछ भी नहीं करती? मेरी समझ यह है कि किसी ऑब्जेक्ट पर लॉक() को कॉल करना वास्तव में ऑब्जेक्ट को ही नहीं बदलता है, न ही यह वास्तव में इसे इस्तेमाल होने से रोकता है, इसे आसानी से एंकर पर एकाधिक लॉक स्टेटमेंट्स के प्लेसहोल्डर के रूप में उपयोग किया जाता है।
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;
}
}
}
}
तो मेरे सवाल है, यह वास्तव में क्या करने के लिए एक अच्छी बात है?
(अद्यतन देखें, बीटीडब्ल्यू) –