Tôi thường thấy mã như vậy là shown here, tức là nơi một đối tượng được phân bổ và sau đó được sử dụng làm "đối tượng khóa".Khóa trên một đối tượng
Dường như với tôi rằng bạn có thể sử dụng bất kỳ đối tượng nào cho điều này, bao gồm cả sự kiện chính nó làm đối tượng khóa. Tại sao phân bổ một đối tượng mới mà không có gì? Sự hiểu biết của tôi là gọi khóa() trên một đối tượng không thực sự thay đổi đối tượng, cũng không thực sự khóa nó khỏi sử dụng, nó đơn giản được sử dụng như một trình giữ chỗ cho nhiều câu lệnh khóa để neo.
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;
}
}
}
}
Vì vậy, câu hỏi của tôi là, đây thực sự là một điều tốt để làm?
(xem cập nhật, btw) –